これは素晴らしいチュートリアルです。必要なものです。(出典:コースweb.net/php-mysql )
オンラインユーザーと訪問者を登録して表示する
MySQLテーブルを使用してオンラインユーザーと訪問者をカウントする
このチュートリアルでは、オンラインユーザーと訪問者の数を登録し、カウントし、Webページに表示する方法を学習できます。原則は次のとおりです。各ユーザー/訪問者はテキストファイルまたはデータベースに登録されます。 Webサイトのページにアクセスするたびに、phpスクリプトは特定の時間(たとえば2分)より古いすべてのレコードを削除し、現在のユーザー/訪問者を追加し、表示するために残っているレコードの数を取得します。
オンラインユーザーと訪問者は、サーバー上のファイルまたはMySQLテーブルに保存できます。この場合、テキストファイルを使用してレコードを追加および読み取る方が、MySQLテーブルに保存するよりも高速であると思います。その他のリクエスト。
最初に、MySQLテーブルを使用する方法よりも、サーバー上のテキストファイルに記録する方法を示します。
このチュートリアルで紹介するスクリプトを含むファイルをダウンロードするには、-> Count Onlineユーザーと訪問者 。
•両方のスクリプトを「.php」ファイルに含めることができます(include()
を使用) ) 、または「 .html "ファイル(<script>
) 、このページの下部に示されている例でわかるように、ただし、サーバーはPHPを実行する必要があります。
オンラインユーザーと訪問者をテキストファイルに保存する
PHPを使用してサーバー上のファイルにレコードを追加するには、そのファイルにCHMOD 0766(またはCHMOD 0777)権限を設定して、PHPがそのファイルにデータを書き込めるようにする必要があります。
- サーバー上にテキストファイルを作成します(たとえば、
userson.txt
という名前) )そしてそれにCHMOD 0777
を与えます アクセス許可(FTPアプリケーションで、そのファイルを右クリックし、[プロパティ]を選択して、[Read
を選択します。 、Write
、およびExecute
オプション)。 - PHPファイル(
usersontxt.php
という名前)を作成します )以下のコードを使用して、このphpファイルをuserson.txt
と同じディレクトリにコピーします。 。
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
?>
- 上記のスクリプトを「.php」ファイルに含める場合は、オンラインユーザーと訪問者の数を表示する場所に次のコードを追加します。
4.「。html」ファイル内のオンライン訪問者/ユーザーの数を表示するには、次のコードを使用します:
<script type="text/javascript" src="usersontxt.php?uvon=showon"></script>
このスクリプト(および以下に示す他のスクリプト)は$_SESSIONで機能します。それを使用するPHPファイルの先頭に、次を追加する必要があります。session_start();.MySQLテーブルを使用してオンラインユーザーと訪問者をカウントする
MySQLテーブルにオンライン訪問者とユーザーの数を登録、カウント、表示するには、次の3つのSQLクエリを実行する必要があります:特定の時間より古いレコードを削除する新しいユーザー/ visitorで行を挿入するか、すでにある場合は挿入され、その列のタイムスタンプを更新します。残りの行を選択します。これは、MySQLテーブル(「userson」という名前)を使用してオンラインユーザーと訪問者を保存および表示するスクリプトのコードです。
- 最初に、2つの列(uvon、dt)を持つ「userson」テーブルを作成します。 「uvon」列には、ユーザーの名前(ログインしている場合)または訪問者のIPが保存されます。 「dt」列には、ページにアクセスしたときのタイムスタンプ(Unix時間)が記載された数値が格納されます。
- 次のコードをphpファイルに追加します(たとえば、「create_userson.php」という名前):
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();
?>
- 次に、
userson
でデータを挿入、削除、および選択するスクリプトを作成します。 表(コードの説明については、スクリプトのコメントを参照してください)。
- 以下のコードを別のphpファイル(
usersmysql.php
という名前)に追加します ):両方のファイルで、MySQLデータベースに接続するための個人データを変数$host
に追加する必要があります。 、$user
、$pass
、および$dbname
。
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
?>
-
サーバー上でこれら2つのphpファイルを作成したら、ブラウザで「create_userson.php」を実行して「userson」テーブルを作成します。
-
usersmysql.php
を含めます オンラインユーザーと訪問者の数を表示するphpファイル内のファイル。 -
または、「。html」ファイルに挿入する場合は、次のコードを追加します。
これらのスクリプトを使用した例
•phpファイルに「usersontxt.php」を含める:
<!doctype html>
オンラインユーザーと訪問者に対抗する•htmlファイルに「usersmysql.php」を含める:
<!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>
両方のスクリプト(サーバー上のテキストファイルまたはMySQLテーブルにデータを保存する)は、次のような結果を表示します:オンライン:5
訪問者:3ユーザー:2
- MarPlo
- マリウス