【发布时间】:2018-01-31 06:35:08
【问题描述】:
我正在尝试做一些保护措施,以防止当 php 页面空闲且会话因不活动而过期时访问数据库。我将其中一些基于 session_status() 并且对此有疑问。
使用 alerts 和 console.log,我发现 php 和 js 代码似乎没问题。当我人为地注入 session_status() 值时,我得到了我期望的结果。
问题似乎是 session_start() 即使在会话超时后也总是返回 2(可用)。
我不应该期望 system_status 在不活动超时后自动更新吗?有没有比 session_status() 更好的方法来检查会话状态?
这里是“onclick”函数,当单击按钮时,该函数会在过期页面上为 system_status() 返回“2”:
$("#save-to-database").click(function () {
var active = <?php echo session_status(); ?>;
if(active == 2) { //the session is active, do the sort & save
saveStuff();
} else { // the login has expired, abandon this and reload index.php
window.location.replace("index.php?artist=" + <?php echo $artist ?>);
}
});
【问题讨论】:
-
如果看不到您的任何代码,我们将无法帮助您...
-
session_status在这里没有帮助。如果会话由于不活动(过期)而超时并且用户重新加载页面并调用session_start(),它将开始一个新的、全新的会话,然后调用 session_status() 将告诉您它是活动的。活动和“登录”无关。 -
session_status() 用于检查会话是否被禁用、启用但不存在或处于活动状态。 session_start() 用于创建或恢复现有会话。所以是的,它应该总是返回 2
-
我几乎会把它标记为重复给你:stackoverflow.com/questions/8311320/… 你可以从这个问题的答案中学到很多东西包括如何正确处理会话超时.
-
@drew010 - 是的,我知道当您调用页面时 session_start 将使其可用。我正在尝试(并且失败)的测试用例是让页面空闲直到会话到期,然后单击一个按钮。 onclick 函数在没有页面加载的情况下检查 session_status,并且会话状态仍然报告活动。一会我会在上面的问题中添加onclick函数代码。
标签: php session-state session-timeout