Vấn đề là chúng ta muốn đếm số người truy cập trang web của mình trong ngày, tuần, khách đang online thì làm sao ? Có 2 cách: 1 đang ký free account ở trang web cung cấp modun đếm người .; 2. tự code . Mình có Demo tự code đếm số người truy cập web , thực hiện trình tự như sau:
1. Tạo file"connect.php", file này sẽ kết nối CSDL với MySQL, tự tạo ra CSDL "online", bảng DL "counter" ,nội dung file như sau:
4. Demo:
1. Tạo file"connect.php", file này sẽ kết nối CSDL với MySQL, tự tạo ra CSDL "online", bảng DL "counter" ,nội dung file như sau:
<?php2. Tạo file "counter.php", file có nhiệm vụ lấy IP máy khách rồi gửi về Server , lấy CSDL in ra trình duyệt, nội dung file như sau:
$db_host = 'localhost'; // localhost / ip
$db_user = 'root';// tai khoan Admin
$db_pass = ''; // pass dang nhap
$db_data = 'shopping'; // ten database
// thực hiện kết nối và kiểm tra có thành công hay không
if ($conn = @mysql_connect($db_host, $db_user, $db_pass)) {
// nếu thành công, thực hiện chọn CSDL
if (!@mysql_select_db($db_data)) {
// nếu chọn thất bại, tiến hành tạo CSDL và tạo bảng.
mysql_query('CREATE DATABASE `' . $db_data . '` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci');
mysql_select_db($db_data);
mysql_query('CREATE TABLE IF NOT EXISTS `counter` (
`ip_address` varchar(15) NOT NULL,
`last_visit` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
KEY `ip_address` (`ip_address`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;');
}
} else {
// thông báo lỗi nếu không kết nối CSDL được.
die(mysql_error());
}
?>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />3. Tạo file"index.php" , file này có nhiệm vụ include file counter ( nếu muốn kết quả đếm hiện ở đâu thì đặt " <?php include("counter.php"); ?> ở đó ), nội dung file như sau:
<?php
$time_now = time(); // lưu thời gian hiện tại
$time_out = 60; // khoảng thời gian chờ để tính một kết nối mới (tính bằng giây)
$ip_address = $_SERVER['REMOTE_ADDR']; // lưu lại IP của kết nối
require_once('connect.php'); // nhúng file kết nối CSDL vào
// kiểm tra xem thời gian hiện tại so với lần truy cập cuối có lớn hơn khoảng thời gian chờ không
//- nếu không thì thôi
//- nếu có thì thêm vào như là một kết nối mới
if (!mysql_num_rows(mysql_query("SELECT `ip_address` FROM `counter` WHERE UNIX_TIMESTAMP(`last_visit`) + $time_out > $time_now AND `ip_address` = '$ip_address'")))
mysql_query("INSERT INTO `counter` VALUES ('$ip_address', NOW())");
// đếm số người đang online
$online = mysql_num_rows(mysql_query("SELECT `ip_address` FROM `counter` WHERE UNIX_TIMESTAMP(`last_visit`) + $time_out > $time_now"));
// đếm số người ghé thăm trong ngày (từ 0h ngày hôm đó đến thời điểm hiện tại)
$day = mysql_num_rows(mysql_query("SELECT `ip_address` FROM `counter` WHERE DAYOFYEAR(`last_visit`) = " . (date('z') + 1) . " AND YEAR(`last_visit`) = " . date('Y')));
// đếm số người ghé thăm ngay hôm qua
$yesterday = mysql_num_rows(mysql_query("SELECT `ip_address` FROM `counter` WHERE DAYOFYEAR(`last_visit`) = " . (date('z') + 0) . " AND YEAR(`last_visit`) = " . date('Y')));
// đếm số người ghé thăm trong tuần (từ 0h ngày thứ 2 đến thời điểm hiện tại)
$week = mysql_num_rows(mysql_query("SELECT `ip_address` FROM `counter` WHERE WEEKOFYEAR(`last_visit`) = " . date('W') . " AND YEAR(`last_visit`) = " . date('Y')));
// đếm số người ghé thăm tuần trước
$lastweek = mysql_num_rows(mysql_query("SELECT `ip_address` FROM `counter` WHERE WEEKOFYEAR(`last_visit`) = " . (date('W') - 1). " AND YEAR(`last_visit`) = " . date('Y')));
// đếm số người ghé thăm trong tháng
$month = mysql_num_rows(mysql_query("SELECT `ip_address` FROM `counter` WHERE MONTH(`last_visit`) = " . date('n') . " AND YEAR(`last_visit`) = " . date('Y')));
// đếm số người ghé thăm trong năm
$year = mysql_num_rows(mysql_query("SELECT `ip_address` FROM `counter` WHERE YEAR(`last_visit`) = " . date('Y')));
// đếm tổng số người đã ghé thăm
$visit = mysql_num_rows(mysql_query("SELECT `ip_address` FROM `counter`"));
echo '<pre>' .'<br />' .'<br />' .
' Đang online: ' . $online . '<br />' .
' Hôm nay: ' . $day . '<br />' .
' Hôm qua: ' . $yesterday . '<br />' .
' Tuần này: ' . $week . '<br />' .
' Tuần trước: ' . $lastweek . '<br />' .
' Tháng này: ' . $month . '<br />' .
' Năm nay: ' . $year . '<br />' .
' Lượt truy cập: ' . $visit .
'</pre>';
?>
<?php
include("counter.php");
?>
4. Demo:
Hình minh họa :
0 nhận xét:
Đăng nhận xét