如果$ _SESSION已在PHP中过期,则重定向用户

时间:2018-01-26 18:16:21

标签: php ajax

在每个页面上,我检查用户是否已连接(即:如果用户会话处于活动状态)。

var sess;
app.get('/', function (req, res, next){
sess = req.session;
console.log(sess);
if(sess.userInfo !== undefined){
    console.log(sess.userInfo.initStage);
    if(sess.userInfo.initStage === 0){
        res.render('index', { title: sess.userInfo });
    }else {
        res.redirect('/home');
    }
}else {
    res.redirect('/login'); 
}
});

它正在运作。

但是如果用户长时间在页面上并且系统需要进行ajax调用,则完成相同的检查但不重定向用户。

为什么?

我在我的php页面上包含validateSession(); function validateSession() { if (!isset($_SESSION['CurrentLogged_USR_Id'])) { header("Location: 'http://example.com'); } } ,但是重定向不是make。

感谢。

2 个答案:

答案 0 :(得分:2)

您无法在通过PHP调用的AJAX中重定向。而是返回一个标识该会话已过期的标志,并在JavaScript中进行重定向。

以下是示例代码段。

$.ajax({
    url: "urlToAJAX.php",
    success: function(isSessionExpired){
        if(isSessionExpired)
        {
            window.location = "http://example.com";
        }
}});

答案 1 :(得分:0)

您可以遵循此代码。

<强>的Ajax

$.ajax({
   url:..
   type:..
   success(data){
      if(data == "SESSION_EXPIRED"){
          window.location = "your-login-page";
      }
   }
});

在PHP代码中,您可以检查会话是否可用。如果不回显字符串SESSION_EXPIRED