php - 如何在 session 过期后自动更新数据库而不刷新我的页面

标签 php mysql session

此代码需要刷新或单击页面才能转到索引页面,并且在 session 过期后更新数据库。

我怎样才能自动让它在 session 过期后更新数据库,这样用户事件将为 0 而无需刷新或单击页面?

$idletime = 3600; //after 1hr the user gets logged out

if (time() - $_SESSION['timestamp'] >= $idletime){
    $online = "UPDATE users SET active = 0 WHERE username = '".$_SESSION['username']."'";
    mysqli_query($con, $online);
    session_destroy();
    header("Location:index.php");
} else {
    $_SESSION['timestamp'] = time();
}

最佳答案

最好的选择是不要在数据库中使用事件/非事件标志,而是使用类似 last_active 的东西时间戳。当用户访问页面时,更新时间戳为CURRENT_TIMESTAMP() .并确定用户当前是否处于事件状态,查询 WHERE active_timestamp < TIMESTAMPADD(MINUTE, -60, CURRENT_TIMESTAMP())

确保设置 active_timestamp作为DATETIME输入表结构。 ( ALTER TABLE users ADD COLUMN active_timestamp datetime AFTER username' )

这里的问题是您的脚本看起来想要在 session 空闲时将用户踢出。为此,您应该查看 JavaScript,设置一个倒计时超过 1 小时的计时器,如果没有事件,则重定向页面。

关于php - 如何在 session 过期后自动更新数据库而不刷新我的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29987521/

相关文章:

php - 使用特定地址不可更改的打开PayPal支付

python - 在 SQLAlchemy 中创建外键失败

php - 这些编码和解码 PHP session 的方法的安全性

php - 加载页面时 session 的未定义索引错误

php - .htaccess:此处不允许的选项 cwp

php - 如何使用 PHP 读取 UTF8+BOM 文件而不将 BOM 显示为内容?

javascript - 如何在javascript中获取json数据

php - 如何从 mysql 表的每一列中创建一个变量?

mysql - 终止 Mysql 查询而不回滚更改

session - Redis 不删除 session key