Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để tính số lượng khách truy cập vào trang web của tôi?

Đây là một hướng dẫn hay, đó là những gì bạn cần. (Nguồn: Courseweb.net/php-mysql )

Đăng ký và hiển thị người dùng và khách truy cập trực tuyến

Đếm người dùng và khách truy cập Trực tuyến bằng bảng MySQL

Trong hướng dẫn này, bạn có thể học cách đăng ký, đếm và hiển thị trên trang web của mình số lượng người dùng và khách truy cập trực tuyến. Nguyên tắc là:mỗi người dùng / khách truy cập được đăng ký trong một tệp văn bản hoặc cơ sở dữ liệu. Mỗi khi một trang của trang web được truy cập, tập lệnh php sẽ xóa tất cả các bản ghi cũ hơn một thời gian nhất định (ví dụ:2 phút), thêm người dùng / khách truy cập hiện tại và lấy số bản ghi còn lại để hiển thị.

Bạn có thể lưu trữ người dùng và khách truy cập trực tuyến trong một tệp trên máy chủ hoặc trong bảng MySQL. nhiều yêu cầu hơn.

Đầu tiên, nó trình bày phương pháp ghi trong tệp văn bản trên máy chủ, hơn phương pháp với bảng MySQL.

Để tải xuống các tệp có tập lệnh được trình bày trong hướng dẫn này, hãy nhấp vào -> Đếm trực tuyến Người dùng và Khách truy cập .

• Cả hai tập lệnh đều có thể được đưa vào tệp " .php" (với include() ) hoặc trong " .html "tệp (với <script> ) , như bạn có thể thấy trong các ví dụ được trình bày ở cuối trang này; nhưng máy chủ phải chạy PHP.

Lưu trữ người dùng trực tuyến và khách truy cập trong một tệp văn bản

Để thêm bản ghi vào tệp trên máy chủ bằng PHP, bạn phải đặt quyền CHMOD 0766 (hoặc CHMOD 0777) cho tệp đó, để PHP có thể ghi dữ liệu vào đó.

  1. Tạo tệp văn bản trên máy chủ của bạn (ví dụ:có tên userson.txt ) và cung cấp cho nó CHMOD 0777 quyền (trong ứng dụng FTP của bạn, nhấp chuột phải vào tệp đó, chọn Thuộc tính, sau đó chọn Read , WriteExecute tùy chọn).
  2. Tạo một tệp PHP (có tên usersontxt.php ) có mã bên dưới, sau đó sao chép tệp php này trong cùng thư mục với userson.txt .

Mã cho usersontxt.php ;

<?php
// Script Online Users and Visitors - http://coursesweb.net/php-mysql/
if(!isset($_SESSION)) session_start();        // start Session, if not already started

$filetxt = 'userson.txt';  // the file in which the online users /visitors are stored
$timeon = 120;             // number of secconds to keep a user online
$sep = '^^';               // characters used to separate the user name and date-time
$vst_id = '-vst-';        // an identifier to know that it is a visitor, not logged user

/*
 If you have an user registration script,
 replace $_SESSION['nume'] with the variable in which the user name is stored.
 You can get a free registration script from:  http://coursesweb.net/php-mysql/register-login-script-users-online_s2
*/

// get the user name if it is logged, or the visitors IP (and add the identifier)

    $uvon = isset($_SESSION['nume']) ? $_SESSION['nume'] : $_SERVER['SERVER_ADDR']. $vst_id;

$rgxvst = '/^([0-9\.]*)'. $vst_id. '/i';         // regexp to recognize the line with visitors
$nrvst = 0;                                       // to store the number of visitors

// sets the row with the current user /visitor that must be added in $filetxt (and current timestamp)

    $addrow[] = $uvon. $sep. time();

// check if the file from $filetxt exists and is writable

    if(is_writable($filetxt)) {
      // get into an array the lines added in $filetxt
      $ar_rows = file($filetxt, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
      $nrrows = count($ar_rows);

            // number of rows

  // if there is at least one line, parse the $ar_rows array

      if($nrrows>0) {
        for($i=0; $i<$nrrows; $i++) {
          // get each line and separate the user /visitor and the timestamp
          $ar_line = explode($sep, $ar_rows[$i]);
      // add in $addrow array the records in last $timeon seconds
          if($ar_line[0]!=$uvon && (intval($ar_line[1])+$timeon)>=time()) {
            $addrow[] = $ar_rows[$i];
          }
        }
      }
    }

$nruvon = count($addrow);                   // total online
$usron = '';                                    // to store the name of logged users
// traverse $addrow to get the number of visitors and users
for($i=0; $i<$nruvon; $i++) {
 if(preg_match($rgxvst, $addrow[$i])) $nrvst++;       // increment the visitors
 else {
   // gets and stores the user's name
   $ar_usron = explode($sep, $addrow[$i]);
   $usron .= '<br/> - <i>'. $ar_usron[0]. '</i>';
 }
}
$nrusr = $nruvon - $nrvst;              // gets the users (total - visitors)

// the HTML code with data to be displayed
$reout = '<div id="uvon"><h4>Online: '. $nruvon. '</h4>Visitors: '. $nrvst. '<br/>Users: '. $nrusr. $usron. '</div>';

// write data in $filetxt
if(!file_put_contents($filetxt, implode("\n", $addrow))) $reout = 'Error: Recording file not exists, or is not writable';

// if access from <script>, with GET 'uvon=showon', adds the string to return into a JS statement
// in this way the script can also be included in .html files
if(isset($_GET['uvon']) && $_GET['uvon']=='showon') $reout = "document.write('$reout');";

echo $reout;             // output /display the result
?>
  1. Nếu bạn muốn đưa tập lệnh ở trên vào tệp ".php", hãy thêm mã sau vào vị trí bạn muốn hiển thị số lượng người dùng và khách truy cập trực tuyến:

4.Để hiển thị số lượng khách truy cập / người dùng trực tuyến trong tệp ".html", hãy sử dụng mã này:

<script type="text/javascript" src="usersontxt.php?uvon=showon"></script>

Tập lệnh này (và tập lệnh khác được trình bày bên dưới) hoạt động với $ _SESSION. Ở phần đầu của tệp PHP mà bạn sử dụng nó, bạn phải thêm:session_start ();. Đếm số người dùng và khách truy cập Trực tuyến bằng cách sử dụng bảng MySQL

Để đăng ký, đếm và hiển thị số lượng khách truy cập và người dùng trực tuyến trong bảng MySQL, yêu cầu thực hiện ba truy vấn SQL:Xóa các bản ghi cũ hơn một thời điểm nhất định. Chèn một hàng với người dùng / khách truy cập mới, hoặc nếu đã có đã chèn, Cập nhật dấu thời gian trong cột của nó. Chọn các hàng còn lại. Đây là mã cho một tập lệnh sử dụng bảng MySQL (có tên là "userson") để lưu trữ và hiển thị Người dùng và Khách truy cập Trực tuyến.

  1. Đầu tiên, chúng tôi tạo bảng "userson", với 2 cột (uvon, dt). Trong cột "uvon" được lưu trữ tên của người dùng (nếu đã đăng nhập) hoặc IP của khách truy cập. Trong cột "dt" được lưu trữ một số có dấu thời gian (Unix time) khi trang được truy cập.
  • Thêm mã sau vào tệp php (ví dụ:có tên "create_userson.php"):

Mã cho create_userson.php :

<?php
header('Content-type: text/html; charset=utf-8');

// HERE add your data for connecting to MySQ database
$host = 'localhost';           // MySQL server address
$user = 'root';                // User name
$pass = 'password';            // User`s password
$dbname = 'database';          // Database name

// connect to the MySQL server
$conn = new mysqli($host, $user, $pass, $dbname);

// check connection
if (mysqli_connect_errno()) exit('Connect failed: '. mysqli_connect_error());

// sql query for CREATE "userson" TABLE
$sql = "CREATE TABLE `userson` (
 `uvon` VARCHAR(32) PRIMARY KEY,
 `dt` INT(10) UNSIGNED NOT NULL
 ) CHARACTER SET utf8 COLLATE utf8_general_ci"; 

// Performs the $sql query on the server to create the table
if ($conn->query($sql) === TRUE) echo 'Table "userson" successfully created';
else echo 'Error: '. $conn->error;

$conn->close();
?>
  1. Bây giờ chúng tôi tạo tập lệnh Chèn, Xóa và Chọn dữ liệu trong userson (Để biết giải thích về mã, hãy xem phần nhận xét trong tập lệnh).
  • Thêm mã bên dưới vào một tệp php khác (có tên là usersmysql.php ):Trong cả hai tệp, bạn phải thêm dữ liệu cá nhân của mình để kết nối với cơ sở dữ liệu MySQL, trong các biến:$host , $user , $pass$dbname .

Mã cho usersmysql.php:

<?php
// Script Online Users and Visitors - coursesweb.net/php-mysql/
if(!isset($_SESSION)) session_start();         // start Session, if not already started

// HERE add your data for connecting to MySQ database
$host = 'localhost';           // MySQL server address
$user = 'root';                // User name
$pass = 'password';            // User`s password
$dbname = 'database';          // Database name

/*
 If you have an user registration script,
 replace $_SESSION['nume'] with the variable in which the user name is stored.
 You can get a free registration script from:  http://coursesweb.net/php-mysql/register-login-script-users-online_s2
*/

// get the user name if it is logged, or the visitors IP (and add the identifier)
$vst_id = '-vst-';         // an identifier to know that it is a visitor, not logged user
$uvon = isset($_SESSION['nume']) ? $_SESSION['nume'] : $_SERVER['SERVER_ADDR']. $vst_id;

$rgxvst = '/^([0-9\.]*)'. $vst_id. '/i';         // regexp to recognize the rows with visitors
$dt = time();                                    // current timestamp
$timeon = 120;             // number of secconds to keep a user online
$nrvst = 0;                                     // to store the number of visitors
$nrusr = 0;                                     // to store the number of usersrs
$usron = '';                                    // to store the name of logged users

// connect to the MySQL server
$conn = new mysqli($host, $user, $pass, $dbname);

// Define and execute the Delete, Insert/Update, and Select queries
$sqldel = "DELETE FROM `userson` WHERE `dt`<". ($dt - $timeon);
$sqliu = "INSERT INTO `userson` (`uvon`, `dt`) VALUES ('$uvon', $dt) ON DUPLICATE KEY UPDATE `dt`=$dt";
$sqlsel = "SELECT * FROM `userson`";

// Execute each query
if(!$conn->query($sqldel)) echo 'Error: '. $conn->error;
if(!$conn->query($sqliu)) echo 'Error: '. $conn->error;
$result = $conn->query($sqlsel);

// if the $result contains at least one row
if ($result->num_rows > 0) {
  // traverse the sets of results and set the number of online visitors and users ($nrvst, $nrusr)
  while($row = $result->fetch_assoc()) {
    if(preg_match($rgxvst, $row['uvon'])) $nrvst++;       // increment the visitors
    else {
      $nrusr++;                   // increment the users
      $usron .= '<br/> - <i>'.$row['uvon']. '</i>';          // stores the user's name
    }
  }
}

$conn->close();                  // close the MySQL connection

// the HTML code with data to be displayed
$reout = '<div id="uvon"><h4>Online: '. ($nrusr+$nrvst). '</h4>Visitors: '. $nrvst. '<br/>Users: '. $nrusr. $usron. '</div>';

// if access from <script>, with GET 'uvon=showon', adds the string to return into a JS statement
// in this way the script can also be included in .html files
if(isset($_GET['uvon']) && $_GET['uvon']=='showon') $reout = "document.write('$reout');";

echo $reout;             // output /display the result
?>
  1. Sau khi bạn đã tạo hai tệp php này trên máy chủ của mình, hãy chạy "create_userson.php" trên trình duyệt của bạn để tạo bảng "userson".

  2. Bao gồm usersmysql.php tệp trong tệp php mà bạn muốn hiển thị số lượng người dùng và khách truy cập trực tuyến.

  3. Hoặc, nếu bạn muốn chèn nó vào tệp ".html", hãy thêm mã này:

Ví dụ sử dụng các tập lệnh này

• Bao gồm "usersontxt.php` trong tệp php:

Phản đối người dùng và khách truy cập trực tuyến

• Bao gồm "usersmysql.php" trong tệp html:

<!doctype html>
<html>
<head>
 <meta charset="utf-8" />
 <title>Counter Online Users and Visitors</title>
 <meta name="description" content="PHP script to count and show the number of online users and visitors" />
 <meta name="keywords" content="online users, online visitors" />
</head>
<body>

<!-- Includes the script ("usersontxt.php", or "usersmysql.php") -->
<script type="text/javascript" src="usersmysql.php?uvon=showon"></script>

</body>
</html>

Cả hai tập lệnh (với việc lưu trữ dữ liệu trong tệp văn bản trên máy chủ hoặc vào bảng MySQL) sẽ hiển thị kết quả như sau:Trực tuyến:5

Số lượt truy cập:3 Người sử dụng:2

  • MarPlo
  • Marius


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn hàng loạt MySQL qua PHP

  2. MySQL:Giới hạn số lượng kết quả nhận được dựa trên giá trị cột | Kết hợp các truy vấn

  3. Mật khẩu được chỉ định cho tài khoản người dùng 'root' không hợp lệ hoặc không kết nối được với máy chủ cơ sở dữ liệu

  4. HOUR () Ví dụ - MySQL

  5. Tìm hiểu về Quyền cấp bảng MySQL