了解しました。PHPスクリプトとMySQLを使用して、オンラインの訪問者の数を表示しています。私はすべてのページで関数を呼び出しており、同じセッション中に同じ人からの重複したエントリがないようにする方法が必要です。
正常に動作しますが、ページが読み込まれるたびに訪問者が増加します。セッション変数に「require_once」ステートメントがあると機能すると思いましたが、違います。以下はPHPコードです。助けてください!
//users online
function update_user_time()
{
session_start();
$session=session_id();
$time=time();
$time_check=$time-600; //SET TIME 10 minutes
$host="localhost"; // Host name
$username="______"; // Mysql username
$password="______"; // Mysql password
$db_name="______"; // Database name
$tbl_name="______"; // Table name
// Connect to server and select databse
mysql_connect("$host", "$username", "$password")or die("cannot connect to server");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name WHERE session='$session'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count=="0"){
$sql1="INSERT INTO $tbl_name(session, time)VALUES('$session', '$time')";
$result1=mysql_query($sql1);
}
else {
"$sql2=UPDATE $tbl_name SET time='$time' WHERE session = '$session'";
$result2=mysql_query($sql2);
}
$sql3="SELECT * FROM $tbl_name";
$result3=mysql_query($sql3);
$count_user_online=mysql_num_rows($result3);
echo "[ $count_user_online users online ]";
// if over 10 minute, delete session
$sql4="DELETE FROM $tbl_name WHERE time<$time_check";
$result4=mysql_query($sql4);
// Open multiple browser page for result
// Close connection
mysql_close();
}