Thứ Năm, 20 tháng 11, 2014

Thống kê số lượt truy cập website bằng php và mysql

Thống kê số lượt truy cập website bằng php và mysql
Thiết kế website chắc hẳn ai cũng biết đến chức năng thống kê số lượt truy cập website thực sự đang truy cập trên website của mình.
Trong bài viết này sẽ hướng dẫn bạn coding chức năng trên với PHP, cùng theo dõi nhé !
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_visit“. 
Create Table 'user_visit'
('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_visit.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.


1
2
$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

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úc7h 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 nối với CSDL và 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_visit"; //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 đó 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);


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);


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);


Đây là sản phẩm sau cùng !

 <?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();
?>


Chúc các bạn thành công với bài hướng dẫn của mình :D

Tham khảo tại :


khoa hoc lap trinh php 
hoc thiet ke web cho nguoi di lam
dich vu thiet ke web tai Ha Noi
hoc thiet ke web



0 nhận xét:

Đăng nhận xét