检查用户是否登录Ajax的网页变化(Check if user logged in on ajax

2019-07-31 02:49发布

作为一个Web应用程序的一部分,我建我需要检查,如果用户在每当更改页面登录。 在一个普通的非Ajax网站,这是容易的,因为我可以把PHP会话条件语句中的标题,标题被称为在每一页上的变化将决定登录页面是否显示与否,但看到头文件仅Ajax应用程序,这是初始加载内设置一次,我怎么能检查每当用户进行AJAX页面请求的会话是否仍然有效? 由于我使用pushState的和popState我知道我可以设置运行每当URL被改变的条件下,但我不知道如何编写检查运行时发生这种情况。

任何和所有帮助表示赞赏。

谢谢。

Answer 1:

您应该返回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应用程序,所以你可能想尝试处理事件,而不是终止程序。



Answer 2:

创建一个PHP页面,检查了会议,并返回true或false。

因此,如果用户没有登录,只要你做一个AJAX请求和会话没有用户信息,只有字符串返回false,你可以使用Ajax回调检查显示正确的信息

EG

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

然后在你的Ajax回调,您可以检查是否响应是假的,或者处理数据的另一种方式EG

$.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
    }
});


文章来源: Check if user logged in on ajax page change