Bài này mình sẽ hướng dẫn các bạn viết ứng dụng
đếm số người đang online bằng PHP&MySql đơn giản nhất. Để làm được điều này chúng ta sẽ thực hiện như sau:
Việc đầu tiên là mình sẽ tạo một CSDL tạo một cơ sở dữ liệu để lưu trữ session và thời gian. Trong bài viết này , chúng ta sẽ tạo một dữ liệu tên là “demo” và table “user_online“. Nếu bạn nào chưa biết cách làm này thì có thể tham khảo bài viết Tạo và quản lý cơ sở dữ liệu bằng phpmyadmin để tham khảo.
|
CREATE TABLE 'user_online'(
'session' char(100) NOT NULL 'default',
'time' int(11) NOT NULL default '0'
)TYPE=MyISAM;
|
Tiếp theo các bạn Tạo file user_online.php. Ở đây time được tính ra bằng hàm time(). Hàm này sẽ lấy ra thời gian hiện tại của người truy cập. Tiếp tục ta lại tính thời gian mới của họ, được tính bằng việc quy ước thời gian quy định.
|
$time=time();
$time_check=$time-600; //Ấn định thời gian là 10 phút, ở đây các bạn có thể thay đổi thời gian.
|
như vậy nếu thời gian lưu trong database mà nhỏ hơn thời gian new này thì chúng ta có thể hiểu rằng vị khách ấy đã rời khỏi website của chúng ta.
Ví dụ mình vào web lúc 7h thì hệ thống nó sẽ lấy thời điểm 7h làm mốc. Nếu sau 1 thời gian mình không làm gì, hoặc mình không truy cập website đó nữa thì hệ thống sẽ không ghi nhận thông tin mới. Như thế nếu bây giờ 8h và trừ đi 10 phút mình quy ước, rõ ràng là thời gian mới hiện tại là 7h50, Thời gian này vẫn lớn hơn thời điểm lưu thông tin 7h (7h50 > 7h). Do vậy, nếu chúng thỏa điều kiện đó thì chúng ta chỉ việc xóa đi các record trong cơ sở dữ liệu là xong.
Kết hợp với kết nổi CSDL chúng ta sẽ tiến hành insert vào bảng.
|
$host="localhost"; //Tên host, thường là localhost
$username="root"; //Mysql username
$password=""; //Mysql password
$db_name="demo"; //Tên cơ sở dữ liệu
$tbl_name="user_online"; //Tên bảng (table)
//Kết nối tới sever và chọn database
mysql_connect("$host", "$username", "$password")or die("cannot connect to server");
mysql_select_db("$db_name")or die("cannot select DB");
|
Sau đó ta tiến hành ghi nhận thông tin người dùng vào CSDL.
|
$sql1="INSERT INTO $tbl_name(session, time)VALUES('$session', '$time')";
$result1=mysql_query($sql1);
|
Ở trên các bạn thấy có biến $session. Thực sự biến $session=session_id() (Session ID được generate ngẫu nhiên độ dài đến 32 ký tự)
Tiếp đến ta tiến hành xóa record khi thời gian thực lớn hơn thời gian trong cơ sở dữ liệu.
|
//Nếu quá 10 phút, xóa bỏ session
$sql4="DELETE FROM $tbl_name WHERE time<$time_check";
$result4=mysql_query($sql4);
|
Tiếp tục là công việc hiển thị thông tin ra bên ngoài bằng cách liệt kệ các record có trong database.
|
$sql3="SELECT * FROM $tbl_name";
$result3=mysql_query($sql3);
|
Và sau đây là toàn bộ nội dung code của trang user_online.php.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
<?php
session_start();
$session=session_id();
$time=time();
$time_check=$time-600; //Ấn định thời gian là 10 phút
$host="localhost"; //Tên host, thường là localhost
$username=""; //Mysql username
$password=""; //Mysql password
$db_name="demo"; //Tên cơ sở dữ liệu
$tbl_name="user_online"; //Tên bảng (table)
// Kết nối tới sever và chọn database
mysql_connect("$host", "$username", "$password")or die("cannot connect to server");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name WHERE session='$session'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count=="0"){
$sql1="INSERT INTO $tbl_name(session, time)VALUES('$session', '$time')";
$result1=mysql_query($sql1);
}
else{
$sql2="UPDATE $tbl_name SET time='$time' WHERE session = '$session'";
$result2=mysql_query($sql2);
}
$sql3="SELECT * FROM $tbl_name";
$result3=mysql_query($sql3);
$count_user_online=mysql_num_rows($result3);
echo "Số người đang online: $count_user_online ";
//Nếu quá 10 phút, xóa bỏ session
$sql4="DELETE FROM $tbl_name WHERE time<$time_check";
$result4=mysql_query($sql4);
//Đóng kết nối
mysql_close();
?>
|
Ứng dụng trên chỉ là những bước cơ bản cho những bạn mới làm quen với
PHP , các bạn nên dùng nó như là dạng tham khảo để phát triển cho ứng dụng lớn hơn sau này. Chúc các bạn thành công !
Tin tức khác:
0 nhận xét: