PHP脚本执行时,Mysql数据库不会更新

时间:2014-10-16 19:16:39

标签: javascript php jquery mysql

我有一个正常运行的超时功能,除了一件事。检查用户当前是否已登录的字段在脚本运行后不会更新。我整个星期都在对它进行测试并让它真正起作用,但是当我今天尝试测试它时,我停止更新该字段。有谁能解释为什么?我还有一个注销按钮,它执行一个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中执行超时脚本是否有益?如果是这样,我将如何做到这一点?

1 个答案:

答案 0 :(得分:3)

我认为你需要一些简单的调试;)你的登录脚本在查询中说:

WHERE `user_id`='$user_id'

但代码更高一点

$user = $_SESSION["id"];

那不是同一个变量;)