我有一个正常运行的超时功能,除了一件事。检查用户当前是否已登录的字段在脚本运行后不会更新。我整个星期都在对它进行测试并让它真正起作用,但是当我今天尝试测试它时,我停止更新该字段。有谁能解释为什么?我还有一个注销按钮,它执行一个jQuery调用,当单击按钮时,它运行一个logout.php脚本,完美运行。这可能是超时脚本停止更新数据库的原因吗?我不认为它可能是什么,但我可能是错的。
超时脚本(php)
<?php
require("../includes/header.php");
$now = time();
$expires = $_SESSION["expire"] + 30;
$user = $_SESSION["id"];
if(!isset($_SESSION["expire"]) || $expires > $now){
$_SESSION["expire"] = $now;
}
else{
mysqli_query($connect, "UPDATE `$user_table` SET `logged_in`=0 WHERE `user_id`='$user_id'");
session_unset();
session_destroy();
mysqli_close($connect);
header("Location: timed_out.php");
}
?>
退出脚本(js&amp; php)
$(document).ready(function(){
$("#logout").on("click", function(){
$.post("../php/logout.php", {}, function(response){
if(response.success == "1"){
location.replace("../pages/logged_out.php");
}
}, "json");
})
})
退出脚本(php)
<?php
ob_start();
require("../includes/header.php");
$user_id = $_SESSION["id"];
ob_clean();
mysqli_query($connect, "UPDATE `$user_table` SET `logged_in`=0 WHERE `user_id`='$user_id'");
session_unset();
session_destroy();
mysqli_close($connect);
echo json_encode(array("success"=>1));
?>
我的另一个问题是。在jQuery而不是PHP中执行超时脚本是否有益?如果是这样,我将如何做到这一点?
答案 0 :(得分:3)
我认为你需要一些简单的调试;)你的登录脚本在查询中说:
WHERE `user_id`='$user_id'
但代码更高一点
$user = $_SESSION["id"];
那不是同一个变量;)