Đếm số tổng số người truy cập và số người đang online bằng PHP&MySql
---o0o---
Ý tưởng
Tạo 1 bảng tbl_analys gồm các trường: analys_id, analys_time, analys_status, analys_ip như hình dưới
analys time lưu lại thời gian cuối cùng mà người dùng tương tác với trang web.
analys_ip lưu lại ip của máy dùng để truy cập, nếu muốn bạn có thể đổi thành session hoặc cookie.
analys_status là trang thái online hay offline của người dùng.
Khi người dùng truy cập vào trang web => lấy ip của họ lưu vào bảng cùng các thông số khác. Sau 10 phút nếu anlys_time < thời gian hiện tại thì analys_status là 0 => người dùng đã offline
Lấy giá trị cho lần đầu truy cập
<?php
$analys_ip = $_SERVER['REMOTE_ADDR'];
$analys_time = time();
$analys_status = '1';
?>
Thu được 1 mảng dữ liệu
$data = array(
'analys_ip' => $analys_ip,
'analys_time' => $analys_time,
'analys_status' => $analys_status
);
So sánh dữ liệu trong mảng $data với dữ liệu có trong bảng theo analys_ip
Nếu chưa tồn tại ip => thêm 1 record mới
Nếu đã tồn tại ip => update record cũ
Chỉ cần count tổng record là ra được tổng số khách đã visit site
Tiếp theo ta xử lí phần đếm khách online, để làm được điều này ta cần đặt code vào footer hoặc header của trang vì đây là vị trí mà ở bất kì page nào của web đều có
Tại footer
Show ra 2 dòng:
Số khách đang online
Số khách đã visit
Tại đây ta cũng thực hiện code đếm số khách online
+ Đầu tiên, lấy ip của người dùng bằng câu lệnh
$analys_ip = $_SERVER['REMOTE_ADDR'];
+set 1 biến timeOut bằng thời gian hiện tại trừ đi 600, tương đương 10 phút
$timeOut = time() - 600;
+Lấy toàn bộ record ra và cho vào vòng foreach để thực hiện so sánh
Nếu record có analys_ip khác analys_ip hiện tại
thì up date lại analys_time và so sánh nó với biến $timeOut
Nếu analys_time < $timeOut thì update status cho từng ip khác là 0 => phân tách giữa khách online và offline
Nếu recodd có analys_ip giống thì không làm gì cả vì đã có code ở trên update lại dữ liệu của ip
Không có nhận xét nào:
Đăng nhận xét