作为我正在构建的网络应用程序的一部分,每当用户更改页面时,我都需要检查他们是否登录。在一个普通的非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
}
});