我有一个php脚本,检查会话值是否与db值匹配,如果不匹配,则用户注销并进入主页。目前这工作很好,当脚本是通过打开每个页面触发(它被添加为一个包含),但我试图用ajax调用jQuery setInterval函数
jQuerysetInterval(function() {
$.ajax({
type: "POST",
url:"includes/multi_check.php"
});
}, 5000); //5 seconds
php $id = $_SESSION['user_id'];
$sql = "SELECT * FROM user WHERE userID = '$id'";
$result = mysqli_query($mysqli,$sql) or die(mysqli_error($mysqli));
$row = mysqli_fetch_array($result);
$db_token = $row['session_token'];
$taken = $row['taken_over'];
if($_SESSION['session'] != $db_token){
$_SESSION['taken_over_by'] = $taken;
header("location:http://www.x-rayqa.co.uk/index.php");
}
在控制台中监视调用时,调用正在工作,如果我在if参数中回显一个值,当条件为真时显示正确的值,但我无法使页面重定向。它完全忽略头部重定向。
另外,当使用手动触发方法重定向用户时,随着jQuery函数的运行,会话不会传递到主页,只要我注释掉jQuery方法,手动方法就会像预期的那样工作
AJAX在后台执行,但是在后台发生的事情并不影响实际的应用程序。如果希望影响客户机,则需要ajax向客户机发送数据,然后让客户机的浏览器做出适当的反应。比如:
setInterval(function() {
$.ajax({
type: "POST",
url:"includes/multi_check.php",
success:function(d){
if(d=="0"){
window.location="http://www.x-rayqa.co.uk/index.php";
}
}
});
}, 5000); //5 seconds
然后在PHP文件中这样写:
if($_SESSION['session'] != $db_token){
$_SESSION['taken_over_by'] = $taken;
exit("0");
}
exit("1");
所以基本上所有这些都将通过ajax将数字1
或0
发送回用户,如果用户获得0
,他们将被重定向到主页。这可能工作也可能不工作,但这是您需要遵循的想法,以使AJAX正常工作。