我目前的作法是當使用者登入的時候,寫入一個記錄登入時間跟使用者的session變數
然後用php寫入mysql資料庫,再用mysql找出離現在一段固定時間登入的使用者當成線上
人數,可是問題來了,如果那個使用者一直在那個網站逛超過我預設的登入時間,那這
位使用者就變成顯示不在線上,可是事實上他還是在阿,我有想過如果當使用者看網頁的
時候也順便修正mysql裡的登入時間,可是我在登出的時候是選擇找使用者跟登入時間做
AND運算在mysql資料庫刪除並用session_unregister()刪除session,但如果想用這樣的
話,最後mysql的登入時間早被我改過了,使用者登出後,mysql就找不到相對應的資料來
刪,我找好久,都找不到能夠直接修改session裡面的變數值的方法,有沒有人可以指點
一下,我也有想過登入時,多加一個以亂數當成惟一的登入session變數,可是我的疑問
會不會重覆到,如果資料庫有兩筆相同的登入值,那最後如果某個人按登出,豈不會多砍
一筆資料
下面是我的程式,connect.php只是單純連資料庫的東西
<?php
session_start();
include('./connect.php');
$MM_Username=$_SESSION['MM_Username'];
$sql="select `login_name`,`login_time` from whoisonline";
$result = mysql_query($sql);
$now_time=date("U");
//$sql1="UPDATE `whoisonline` SET `login_time` = '$now_time' WHERE
`login_name`='$MM_Username'";
//mysql_query($sql1);
echo "現在有";
while( list($a0,$a1)=mysql_fetch_row($result)){
if(($now_time-$a1)<30*60){
if($a0==$MM_Username){
echo $a0.",";
$i++;
}
else
{
echo "<a href=imEdit.php?u=$a0>$a0</a>,";
$i++;
}
}
}
echo "<p>";
echo "共'$i'人在線上";
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.128.194.77