检查登录ajax的用户是否更改了页面


Check if user logged in on ajax page change

作为我正在构建的网络应用程序的一部分,每当用户更改页面时,我都需要检查他们是否登录。在一个普通的非ajax网站上,这很容易,因为我可以将PHP会话条件语句放在头中,每次页面更改时调用的头将决定登录页面是否显示,但由于头文件在初始加载的ajax应用程序中只设置了一次,每当用户发出ajax页面请求时,我如何检查会话是否仍然有效?由于我使用的是pushState和popState,我知道我可以将条件设置为在URL更改时运行,但我不知道如何对检查进行编码,以便在发生这种情况时运行。

感谢所有的帮助。

谢谢。

您应该返回false,这样您就可以做一些智能的事情,比如将用户重定向到登录页面,或者按照您在问题中提到的那样更改标题,而不是用die('false') 杀死脚本

if(!isset($_SESSION['valid_user'])) { 
    return false;
}

或者更好的是,向脚本返回一个json对象,并使用jquery/javascript更改头。

$response = array();
if(!isset($_SESSION['valid_user'])) { 
    $response['logged_in'] = false;
} else {
    $response['logged_in'] = true;
}
// return to jquery for handling
return json_encode($response);

无论哪种方式,你都说你正在构建一个web应用程序,所以你可能想尝试处理事件,而不是终止程序。

创建一个php页面,检查会话并返回true或false。

因此,如果用户没有登录,那么每当您执行ajax请求并且会话没有用户信息时,只会返回字符串false,您可以使用该字符串在ajax回调中检查以显示正确的信息

E。G

if(!isset($_SESSION['user'])) die('false');

然后在ajax回调中,您可以检查响应是否为false,或者以另一种方式处理数据

$.ajax({"url" : url, "success" : function(response){
    if(response == 'false')
    {
        // display a login screen or redirect the user to a login page
        // E.G showLogin() or document.location = '/login.php';
    } else {
        // to something else with the response if the user is logged in
    }
});