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
    Tham gia ngày:
    3/6/13
    Bài viết:
    474
    Đã được thích:
    93
    Đ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.

    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

    Last edited by a moderator: 2/5/18
  2. Bảo Nguyễn
    Tham gia ngày:
    16/3/16
    Bài viết:
    19
    Đã đượ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
    Tham gia ngày:
    3/6/13
    Bài viết:
    474
    Đã được thích:
    93
    Đ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
    Tham gia ngày:
    16/3/16
    Bài viết:
    19
    Đã đượ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
     
  5. rubeevietnam
    Tham gia ngày:
    12/9/17
    Bài viết:
    4
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    Theo mình thì bạn dùng hàm lấy ip rồi lưu vào bảng cơ sở dữ liệu sau đó kiểm tra để có insert vào bảng dữ liệu nữa k.
     
  6. tuantv95
    Tham gia ngày:
    16/3/18
    Bài viết:
    2
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    Cho mình hỏi là tại sau mình copy làm giống bạn mà bị lỗi chổ $user=$_SESSION['id']; nó không hiểu id là gì?
    cảm ơn
     
  7. htloveorg
    Tham gia ngày:
    9/9/15
    Bài viết:
    11
    Đã được thích:
    0
    Điểm thành tích:
    3
    Giới tính:
    Nam
    Thực ra với thời đại bây giờ việc thống kê online không có quá nhiều ý nghĩa nữa :D
     
  8. nhahome93
    Tham gia ngày:
    15/7/16
    Bài viết:
    6
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    đúng rồi bạn. mấy cái đó ai mà sài nữa. quan trọng là chất lượng và chất lượng. :d
     
  9. seonhanhlentops
    Tham gia ngày:
    8/9/15
    Bài viết:
    13
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    GIờ cái này cũng ko còn như xưa nữa hết hot rùi, giờ cố tình khỏi cho ng xem biết thông kê luôn, có chủ yếu admin xem thui à!
     
  10. tuantv95
    Tham gia ngày:
    16/3/18
    Bài viết:
    2
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    tại trong bài người ta cần cái đấy ấy bạn
     
  11. Kế toán Đại Dương
    Tham gia ngày:
    3/11/18
    Bài viết:
    18
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    back-end khó quá T.T
     
  12. thanhdat
    Tham gia ngày:
    5/8/17
    Bài viết:
    19
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    Thanks bạn nhiều nha ạ
     
  13. phongphong1947
    Tham gia ngày:
    18/6/21
    Bài viết:
    1
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    Cho mình hỏi là tại sau mình copy làm giống bạn mà bị lỗi chổ $user=$_SESSION['id']; nó không hiểu id là gì?
    cảm ơn ạk
     


Chủ để tương tự : Code thống
Diễn đàn Tiêu đề Date
Ngôn ngữ lập trình web PHP Cần pro code web PHP 9/4/19
Ngôn ngữ lập trình web PHP Code mã hóa và giải mã base32 đơn giản trong PHP 28/5/18
Ngôn ngữ lập trình web PHP Tự Viết Code mã hóa và giải mã base64 đơn giản trong PHP 26/5/18
Ngôn ngữ lập trình web PHP Lấy đường dẫn src thẻ <img hình ảnh trong chuỗi HTML code PHP 24/11/17
Ngôn ngữ lập trình web PHP Đọc và ghi File .txt từ hosting server khác mơi đặt code PHP 23/11/17