Code thống kê thành viên online trong php

Thảo luận trong 'Ngôn ngữ lập trình web PHP' bắt đầu bởi phamcongson, 2/4/16.

  1. phamcongson

    phamcongson

    Police

    Tham gia ngày:
    3/6/13
    Bài viết:
    481
    Đã được thích:
    97
    Điểm thành tích:
    28
    Giới tính:
    Nam
    Thống kê web tư số lượng truy cập, số người online, số thành viên đang online, số khách đang online là vấn đề không thẻ thiếu trong 1 website.

    Nay ITSEOVN hướng dẫn các bạn cách tạo thống kê này giống hình dưới, thống kế hoàn chỉnh mà 90% các web đang sử dụng.

    Code thống kê bao gồm:
    • Tổng số lượng truy cập
    • Số người đang online
    • Số thành viên đang online
    • Số khách đang online
    tao-thong-ke-so-thanh-vien-online-trong-php.png

    Code thống kê thành viên online trong php

    1. Tạo Cơ Sở Dữ Liệu Trong MySQL

    • Tạo cơ sở dữ liệu gồm 2 bảng như dưới, chỉ cần copy code cho vào mysql chạy là được.
    Mã:
    CREATE TABLE `user_online` (
    `id` VARCHAR( 50 ) NOT NULL PRIMARY KEY,
    `lastvisit` INT( 14 ) NOT NULL,
    `user` VARCHAR( 100 ) NULL
    );
    
    CREATE TABLE `counter` (
      `cnt` int(4) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
    
    INSERT INTO `counter` VALUES (0);
    
    2. Tạo file PHP biến đếm
    • Tạo 1 file php có tên thongke.php sau đó copy toàn bộ đoạn code sau vào trong file này.
    PHP:
    <?php
    session_start
    (); //khởi tạo session
    ?>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <?php

    //Ket noi co so du lieu
    $link=mysqli_connect('localhost','root','','test') or die (mysqli_error());
    mysqli_query($link,'set names utf8');
    //Start Session


       
    $timeout=1;// Thoi gian timeout, tinh bang phut
       
    $id=session_id();//Lay id cua moi phien nguoi dung
       
    $user=$_SESSION['id'];//lay session để kiểm tra là thành viên hay khách (Dựa vào session của trang đăng nhập, Chỉ cần khi nhúng vào trang web đang làm)
       //Xem id da co trong csdl hay chua
       
    $sql="select 1 from `user_online` where `id`='$id'";
       
    $rs=mysqli_query($link,$sql);
       if(
    mysqli_num_rows($rs)>0)
       {
           
    //Da co trong CSDL -> Cap nhat lai lastvisit
             
    $sql="update `user_online` set `lastvisit`=unix_timestamp(),`user`='$user' where `id`='$id'";
             
    mysqli_query($link,$sql);
       }
       else
       {
           
    //Chua co trong CSDL -> Thêm vào CSDL
           
    $sql="insert into `user_online` values ('$id',unix_timestamp(),'$user')";
           
    mysqli_query($link,$sql);
       }
       
    //Xoa nhung user da het thoi gian timeout
       
    $sql="delete from `user_online` where unix_timestamp()-lastvisit > $timeout * 60";
       
    mysqli_query($link,$sql);

       
    //Lay so luong nguoi dang online
       
    $sql="select count(*) from `user_online`";
       
    $rs=mysqli_query($link,$sql);
       
    $r=mysqli_fetch_row($rs);
       
    $cnt=str_pad($r[0],3,'0',STR_PAD_LEFT);
       
    $songuoionline="";
       for(
    $i=0;$i<strlen($cnt);$i++)
       {
           
    $digit=substr($cnt,$i,1);
           
    $songuoionline.="<img src='images/$digit.png' width='16' align='absmiddle' height='21' />";
       }
    // Dem so thanh vien
       
    $sql="select count(*) from `user_online` where `user`!=''";
       
    $rs=mysqli_query($link,$sql);
       
    $r=mysqli_fetch_row($rs);
       
    $cnt=str_pad($r[0],3,'0',STR_PAD_LEFT);
       
    $sothanhvien="";
       for(
    $i=0;$i<strlen($cnt);$i++)
       {
           
    $digit=substr($cnt,$i,1);
           
    $sothanhvien.="<img src='images/$digit.png' width='16' align='absmiddle' height='21' />";
       }

    // Dem so khach
       
    $sql="select count(*) from `user_online` where `user`=''";
       
    $rs=mysqli_query($link,$sql);
       
    $r=mysqli_fetch_row($rs);
       
    $cnt=str_pad($r[0],3,'0',STR_PAD_LEFT);
       
    $sokhach="";
       for(
    $i=0;$i<strlen($cnt);$i++)
       {
           
    $digit=substr($cnt,$i,1);
           
    $sokhach.="<img src='images/$digit.png' width='16' align='absmiddle' height='21' />";
       }

       
    //Tang so luot truy cap (Mở rộng: Dùng thêm SESSION để 1 phiên truy cập chỉ tăng 1 lần)
       
    $sql="UPDATE `counter` SET `cnt`=`cnt`+1 ";
       
    mysqli_query($link,$sql);
       
    // Dem so luot truy cap
       
    $sql="SELECT `cnt` from `counter`";
       
    $rs=mysqli_query($link,$sql);
       
    $r=mysqli_fetch_assoc($rs);
       
    $cnt=str_pad($r['cnt'],5,'0',STR_PAD_LEFT);
       
    $luotruycap="";
       for(
    $i=0;$i<strlen($cnt);$i++)
       {
           
    $digit=substr($cnt,$i,1);
           
    $luotruycap=$luotruycap"<img src='images/$digit.png' width='16' align='absmiddle' height='21' />";
       }

    ?>
    <div class="mycart" style="text-align:right;padding-right:10px">
    <div class="small_heading">
      <h5 class="colr">THỐNG KÊ</h5>
    </div>
    <div style="clear:both"></div>
    <?php
      
    echo "Số lượt truy cập: $luotruycap";
      echo 
    "<br/>Số người online: $songuoionline";
      echo 
    "<br/>Số thành viên: $sothanhvien";
      echo 
    "<br/>Số khách: $sokhach";
    ?>
    </div>
    • Sau đó include('thongke.php') này vào nơi bạn cần.
    Download full code thống kê thành viên online tại đây.

    Chúc bạn thành công.

    Bài viết được bảo vệ bởi DMCA.com Protection Status
     
    Cảm ơn đã xem bài:

    Code thống kê thành viên online trong php

    Chỉnh sửa cuối: 5/4/16
    Đang tải...
  2. Bảo Nguyễn

    Bảo Nguyễn Thành Viên Mới

    Tham gia ngày:
    16/3/16
    Bài viết:
    25
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    Hay đấy anh, nhưng nó tính theo ip hay là mỗi lần f5 lại cộng thêm vậy
     
  3. phamcongson

    phamcongson

    Police

    Tham gia ngày:
    3/6/13
    Bài viết:
    481
    Đã được thích:
    97
    Điểm thành tích:
    28
    Giới tính:
    Nam
    Code thống kê bao gồm:
    • Tổng số lượng truy cập : mỗi lần F5 tăng 1
    • Số người đang online : theo IP
    • Số thành viên đang online : theo user
    • Số khách đang online : theo IP
     
  4. Bảo Nguyễn

    Bảo Nguyễn Thành Viên Mới

    Tham gia ngày:
    16/3/16
    Bài viết:
    25
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    Toàn bộ em thấy khá ok nhưng mà có cách nào mà để khi F5 trên cùng một ip mà nó không tăng không anh nhỉ, nếu mà chỉnh được cái này em nghĩ quá ngon luôn
     


Like và Share ủng hộ ITSEOVN

Người dùng tìm kiếm ITSEOVN trên công cụ tìm kiếm

  1. code cap nhat user online