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