2014-03-01 142 views
0

有很多問題關於這個問題,但我想他們都不能幫助我在我的情況。我會告訴你我的登錄表單,我的主頁,顯示活動用戶,並且對啓動lastTimeUpdate函數有點困惑。 這裏是我的主要問題形式,問題是有活躍用戶的列表,如果用戶活躍,他的名字顯示,如果不是 - 不顯示,但如果用戶退出瀏覽器,會話銷燬,但沒有註銷:在瀏覽器關閉註銷

<?php 
include 'config.php'; 
//include 'logout.php'; 
$query = "SELECT * FROM userinfo WHERE `ifactive` = 1"; 
if(isset($_SESSION['uname'])){ 

$result = mysql_query($query); 
echo "<div id=maincontenttopleft> 
<p>Active users</p>"; 
echo "<div id=acuser><table id=activeusers>"; 

while($row = mysql_fetch_array($result)){ 
echo "</td><td>" . $row['name'] . "</td></tr>"; 
} 
echo "</table></div>"; 
mysql_close(); 
} 
//if (session_destroy()) { 
//mysql_query("SELECT * FROM `userinfo` WHERE `ifactive` = 1 AND `uname` != 
'$_SESSION[uname]'"); 
//mysql_query("UPDATE `userinfo` SET `ifactive` = 0 WHERE `uname` != 
'$_SESSION[uname]'") or die(mysql_error()); 
//} 
if (!isset($_SESSION['uname'])) { 
$_SESSION['uname'] = time(); 
} else if (time() - $_SESSION['uname'] > 10) { 
// session started more than 30 minutes ago 
//mysql_query("SELECT * FROM `userinfo` WHERE `ifactive` = 1 AND `uname` = 
'$_SESSION[uname]'"); 
//mysql_query("UPDATE `userinfo` SET `ifactive` = 0 WHERE `uname` = 
'$_SESSION[uname]'") or die(mysql_error()); 
session_regenerate_id(true); // change session ID for the current session an  
invalidate old session ID 
$_SESSION['uname'] = time(); // update creation time 
} 
?> 

我想檢查是否有一個銷燬的會話,根據名稱將此會話結束的名稱設置爲我的布爾(ifactive)爲零。你能幫助我瞭解它的邏輯嗎?

回答

0

然後,您需要將每個用戶的session_id保存在數據庫中。 然後在一個cron裏面,例如有一個腳本檢查與每個會話相關的文件的存在。

這裏是你如何找到你的會議文件夾,如果你不想惹你的配置文件:

<?php 

echo session_save_path(); 

?> 

你的cron的腳本,然後可以保存一個txt文件其結果將用於更容易的網站腳本閱讀(或更好的,保存在內存中,因此速度更快 - 結帳redis)。

+0

好吧,但因爲我有我的會話存儲在臨時文件夾中,我可以只檢查這種文件的存在,而不將它存儲在我的數據庫中,我想會話文件是MD5哈希? – user3351517

+0

只有名稱被散列,我看到 – user3351517

+0

不確定,查看會話中的php文檔以獲取更多信息 –

相關問題