Php 浏览器关闭注销时

Php 浏览器关闭注销时,php,Php,关于这个问题有很多问题要问,但我想没有一个能对我的情况有所帮助。我将向您展示我的登录表单,我的主页,显示活跃用户,我对启动lastTimeUpdate功能有点困惑。 这是我的主要内容表单,问题是如果用户处于活动状态,则会显示一个活动用户列表。如果用户退出浏览器,则会销毁会话,但不会注销,如果用户处于活动状态,则会显示其姓名: <?php include 'config.php'; //include 'logout.php'; $query = "SELECT * FROM userinf

关于这个问题有很多问题要问,但我想没有一个能对我的情况有所帮助。我将向您展示我的登录表单,我的主页,显示活跃用户,我对启动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
}
?>

我想检查是否存在已销毁的会话,根据名称获取此会话的名称,并将布尔值iActive设置为零。你能帮我解释一下它的逻辑吗

然后需要保存数据库中每个用户的会话id。 例如,在cron中,有一个脚本检查与每个会话关联的文件是否存在

如果您不想弄乱配置文件,可以通过以下方式找到会话文件夹:

<?php

echo session_save_path ();

?>

然后,您的cron脚本可以将结果保存在一个txt文件中,该文件更易于您的网站脚本读取,或者更好的是,将其保存在内存中以便更快-签出redis。

好的,但是由于我的会话存储在临时文件夹中,我只能检查此类文件的存在,而不能将其存储在数据库中,我假设会话文件是md5散列的??只有名称是散列的我不确定,请查看有关会话的php文档以了解更多信息