Thứ Sáu, 23 tháng 10, 2015

Đếm số lượng truy cập php

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:

<?php
$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());
}
?>
2. 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:
<meta http-equiv="content-type" content="text/html;charset=utf-8" />

<?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>';
?> 

link website:http://toantinit.blogspot.com/2012/07/em-so-nguoi-truy-cap-web-bang-php-mysql.html

Không có nhận xét nào:

Đăng nhận xét