我只使用JQuery
几周了。在这短短的时间里,我注意到,当一个SESSION到期时,我的登录页面会加载到已经加载的文档中。在我开始使用JQuery之前,这从来都不是问题。所以我想,因为我已经重写了我的所有JQuery文档以调用PHP,我的单独SESSION检查被引入JQuery PHP调用而不是重定向到登录页面。执行此操作时,快速页面刷新会将用户发送到登录页面。但它肯定看起来很俗气。
所以,我对此的想法(我希望我错了)就是把
if ($_SESSION["memberid"] == "") {
header("Location: wslogin.php");
exit();
}
在JQuery调用的每个PHP块中。也许这就是我现在需要的东西,因为我使用的是JQuery。在JQuery之前,我的所有工作都在<form>
标记内,并且每个操作都会重新加载页面。结束的SESSION 始终发送到登录页面。我不是世界上最好的解释者,但我希望有人理解这一点,并有一个解决方案。感谢。
答案 0 :(得分:2)
如果会话过期,则从请求的页面发送401-Unauthorized状态代码。然后在客户端AJAX调用中捕获状态代码。
<强>的JavaScript 强>
$.ajax({
data: {},
dataType: 'json',
success: function(data) {
// do whatever here
},
type: 'post',
url: 'load_data.php',
error: function(XMLHttpRequest, textStatus, errorThrown) {
// XMLHttpRequest.responseText has your json string
// XMLHttpRequest.status has the 401 status code
if (XMLHttpRequest.status === 401) {
location.href = 'login.php';
}
}
});
<强> PHP 强>
header('HTTP/1.1 401 Unauthorized', true, 401);
<强>参考强>
答案 1 :(得分:1)
PHP Session,用php控制你的会话
<?php
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 120)) {
session_unset(); // unset $_SESSION variable for the run-time
session_destroy(); // destroy session data in storage
header('location:logout.php');
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
if (empty($_SESSION['username'])) {
header('location:logout.php');
}
?>
您可以将此保留在模板页面的标题上,以便每次php检查会话时间时,即使您可以改进此...