如果用户不在网页上,我写了以下php代码以在10秒后销毁会话,但它无法正常运行。它会在10秒后正确杀死会话,但它不会更新数据库。要更新数据库,我必须刷新浏览器上的index.php页面,然后更新数据库。我希望如果我关闭浏览器或处于非活动状态,会话将在启动10秒后自动销毁,并且无论我是否在浏览器上都会更新数据库。我不想让更新的东西更新数据库。
$inactive = 10;
// check to see if $_SESSION["timeout"] is set
if (isset($_SESSION["timeout"])) {
// calculate the session's "time to live"
$sessionTTL = time() - $_SESSION["timeout"];
if ($sessionTTL > $inactive) {
$new_status= 0;
$checkbox = "UPDATE online SET status=($new_status) WHERE id=1 ";
$stmt = $conn->prepare($checkbox);
// Now we execute the query passing an array toe execute();
$results = $stmt->execute(array($new_status));
// Extract the values from $result
$error = $stmt->errorInfo();
header("Location:logout.php");
unset($_SESSION['username1']);
}
}
答案 0 :(得分:0)
这是不可能的。会话绑定到单个用户,如果用户变为非活动状态,则他不会打开任何php脚本,这可能会导致绑定到其会话的操作。
如果要检测不活动,则必须将最后一个操作的时间戳存储在数据库中,并将此值与当前时间进行比较。
UPDATE user SET status=0 WHERE UNIX_TIMESTAMP() - last_action > 10;
并设置不活动字段,您可以使用此
{
status: 200,
success: true,
result:
[ { Dribbble: 'a',
Behance: '',
Blog: 'http://blog.invisionapp.com/reimagine-web-design-process/',
Youtube: '',
Vimeo: '' },
{ Dribbble: '',
Behance: '',
Blog: 'http://creative.mailchimp.com/paint-drips/?_ga=1.32574201.612462484.1431430487',
Youtube: '',
Vimeo: '' } ]
}