Tạo bộ đếm số người truy cập sử dụng Địa chỉ IP trong PHP


Khi xây dựng một website ai cũng muốn website của mình hoạt động hiệu quả và có nhiều người biết đến.Và bạn cũng tò mò không biết hiện tại có bao nhiêu người đang xem website của mình cũng như đã có bao nhiêu lượt xem. Để biết được điều đó thì chúng ta có thể tự tạo bộ đếm số người truy cập sử dụng Địa chỉ IP trong PHP và Mysql.

Và chúng ta bắt đầu học php bằng cách bắt tay vào xây dựng chức năng đó nào!
Trước hết, chúng ta tạo bảng trong cở sở dữ liệu như sau
[codesyntax lang=”php”]
CREATE TABLE `useronline` (
`id` int(11) NOT NULL auto_increment,
`ip` varchar(50) NOT NULL,
`local` varchar(100) NOT NULL,
`tgtmp` int(15) NOT NULL,
`status` tinyint(2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=149 ;
[/codesyntax]
Trước khi làm làm việc với cơ sở dữ liệu  trong quá trình lập trình web, chúng ta cần tạo kết nối như sau:
 
[codesyntax lang=”php”]
            $host = 'localhost';
            $user_host = 'root';
            $pass = 'root';   
            $conn=mysql_connect("localhost","root","root") or die("can't connect");
            mysql_select_db("useronline",$conn);
[/codesyntax]
Khi có người dùng truy cập vào website thì chúng ta sẽ lưu lại thông tin của khách hàng vào bảng useronline.
Các thông tin trong đó bao gồm:
·         Địa chỉ IP khách hàng truy cập.
·         Địa chỉ trang người dùng đang truy cập.
·         Thời điểm người dùng bắt đầu truy cập vào trang đó.
·         Và gán status=1 là người dùng đang online
Để lưu thông tin khách hàng vào cơ sở dữ liệu chúng ta làm như sau:
[codesyntax lang=”php”]
            $tg=time();// lay thoi gian hien tai
            $tgout=900;//15 phut
            $tgnew=$tg-900;
            $ip=$_SERVER['REMOTE_ADDR'];//lay ip cua nguoi dang su dung
            $local=$_SERVER['PHP_SELF'];// lay url trang hien tai
            //luu thong tin nguoi truy cap
            $sql="insert into useronline(ip,local,tgtmp,status) VALUES ('".$ip."','".$local."','".time()."',1)";
            $result = mysql_query($sql);      
[/codesyntax]
Chúng ta sẽ đặt thời gian là 15 phút trở lại thì tính là họ đang online trang này.Sau 15 phút mà người dùng không sử dụng website thì coi như họ đã thoát khỏi website khi đó các trang họ vừa xem sẽ được chuyển status=0.
Và sau đó chúng ta kiểm tra bảng useronline xem nếu bản ghi nào đã truy cập quá 15 phút thì ta chuyển status=0.
[codesyntax lang=”php”]
//update lai trang thai neu truy cap qua 15p
            $sql2="UPDATE useronline SET status=0 WHERE tgtmp <".$tgnew;
            $result = mysql_query($sql2);
[/codesyntax]
Vậy là bạn đã làm xong nhiệm vụ lưu thông tin người truy cập.Bạn sẽ đặt đoạn code này vào một file .php và bạn sẽ include vào đầu trang mà bạn muốn lưu thông tin người truy cập. Code đầy đủ của việc lưu thông tin người truy cập như sau:
[codesyntax lang=”php”]
           $host = 'localhost';
            $user_host = 'root';
            $pass = 'root';
            $database = 'useronline';
            $conn=mysql_connect("localhost","root","root") or die("can't connect");
            mysql_select_db("online",$conn);
            ///
            $tg=time();// lay thoi gian hien tai
            $tgout=900;//15 phut
            $tgnew=$tg-900;
            $ip=$_SERVER['REMOTE_ADDR'];//lay ip cua nguoi dang su dung
            $local=$_SERVER['PHP_SELF'];// lay url trang hien tai
            //luu thong tin nguoi truy cap
            $sql="insert into useronline(ip,local,tgtmp,status) VALUES ('".$ip."','".$local."','".time()."',1)";
            $result = mysql_query($sql);      
            //update lai trang thai neu truy cap qua 15p
            $sql2="UPDATE useronline SET status=0 WHERE tgtmp <".$tgnew;
            $result = mysql_query($sql2);
[/codesyntax]
Tiếp theo chúng ta sẽ đếm số người đang online.
Chúng ta sẽ đếm trong bảng useronline những bản ghi có status=1 là những trang đang có người xem. Nhưng mỗi IP chỉ tính là 1 người truy cập dù họ đang xem nhiều trang nên chúng ta thêm DISTINCT theo ip nhé.
[codesyntax lang=”php”]
// dem so nguoi online
            $sql2="SELECT DISTINCT ip FROM useronline WHERE status=1";
            $result = mysql_query($sql2);
            $user = mysql_num_rows($result);
            echo '<p> So nguoi dang online: '.$user;
[/codesyntax]
Nếu mỗi lần trang được hiển thị thì sẽ là một lần xem nên chúng ta chỉ cần đếm số bản ghi trong bảng là xong.
[codesyntax lang=”php”]
            $sql="SELECT ip FROM useronline";
            $result = mysql_query($sql);
            $count_visit = mysql_num_rows($result);
            echo '<p> So luot truy cap website: '.$count_visit;
[/codesyntax]

0 nhận xét:

Đăng nhận xét