Ở những bài trước mình đã hướng dẫn mọi người làm login và edit user trong php và hôm nay mình sẽ giới thiệu đến mọi người một tính năng mới trong php đó là thống kê sống người đang online trong web của bạn.

Vì đây là một trong những chức năng nhỏ trong lập trình php nên mình sẽ không đi sâu vào phần thống kê được bao nhiêu thành viên tổng online từ trước đến giờ mà chỉ hiển thị số người hiện tại đang ol web của bạn thôi.

php

Đâu tiên bạn khởi tạo csdl với đoạn code sau

Tìm hiểu về session trong ngôn ngữ PHP – GPB9020

Trước hết, chúng ta khởi tạo cở sở dữ liệu như sau. (xem lại bài bài 9: ngôn ngữ SQL và MYSQL cơ bản)


mysql> create table useronline(tgtmp INT(15) DEFAULT “0” NOT NULL ,
ip VARCHAR(50) NOT NULL ,
local VARCHAR(100) NOT NULL,
PRIMARY KEY(tgtmp),
KEY ip(ip),
KEY local(local));
Trong đó thì tgtmp là thời gian người dùng truy cập tính từ lúc họ vào web
IP là thông tin ip của người dùng khi vào web
local là vị trí người dùng truy cập
Khi mà người dung vào web thì chúng ta sẽ lưu thông tin người dùng vào csdl với các tham số cơ bản như trogn data
tgtmp được lưu vào hàm time() và nó sẽ lấy thời gian người dùng truy cập.

Khi người dùng truy cập vào trang web, chúng ta sẽ tiến hành insert thông tin của họ vào cơ sở dữ liệu với các tham số cơ bản nhưng trong database.

<?php
$tg=time();
$tgout=900;
$tgnew=$tg – $tgout;
?>
Như thế chúng ta đã lưu được trong data thời gian của người dùng và biết được quãng thời gian họ ở lại bắt đầu từ lúc nào và thoát ra vào thời gian nào.Nếu sau một thời gian bạn không truy cập web hoặc không làm gì thì nó sẽ không lưu thông tin của bạn.
<?php
$conn=mysql_connect(“localhost”,”root”,”root”) or die(“can’t connect”);
mysql_select_db(“online”,$conn);
?>

Sau khi lưu thông tin của người dùng vào CSDL:

<?php
$sql=”insert into useronline(tgtmp,ip,local) values(‘$tg’,’$REMOTE_ADDR’,’$PHP_SELF’)”;
$query=mysql_query($sql);
?>

$REMOTE_ADDR Sử dụng để lấy ip người dùng

$PHP_SELF Lấy ra đường dẫn mà người dùng truy cập

<?php
$sql=”delete from useronline where tgtmp < $tgnew”;
$query=mysql_query($sql);
?>
Tiếp đến là hiển thị thông tin ra bên ngoài bằng việc liệt kê record trong data
<?php
$sql=”SELECT DISTINCT ip FROM useronline WHERE local=’$PHP_SELF’”;
$query=mysql_query($sql);
$user = mysql_num_rows($query);
?>
Trong đó thì DISTINCT là cú pháp liệt kê các record và không cho phép sử dụng dữ liệu trùng lặp trong cú pháp select.Như vậy các bạn đã liệt kê được tất cả các bản ghi truy cập trên trang useronline.php và cuối cùng là xuất thông tin đó ra web.
Gợi ý xem thêm:

Nguồn: http://gianphoibenlau.com