如何处理PHP会话超时

时间:2017-08-16 09:04:08

标签: javascript php jquery

我有一个显示时间表的网页区域,用户可以左右点击一周前进/后退:

<script type="text/javascript">
 var TimesheetOffset = 0;
 function TimesheetNav(AdjustBy) {
   TimesheetOffset = TimesheetOffset + AdjustBy;
   $("#timesheets").load("populate_timesheets.php?start=" + TimesheetOffset);
 }
</script>

populate_timesheets.php脚本在ID为“timeheets”的DIV区域中显示时间表信息,但仅当用户已登录且其会话未到期时 - 如果会话已过期,则显示登录页面:

    if (!isset($_SESSION['login_user'])) {
        header("location: index.php");
    }

问题是如果会话超时,index.php脚本会显示应显示时间表的位置,而不是替换整个页面。我如何改变PHP或JavaScript,以便如果会话超时,登录页面将替换整个页面?

1 个答案:

答案 0 :(得分:1)

JavaScript代码:

$.ajax("populate_timesheets.php?start=" + TimesheetOffset, {
   type: "GET",
   statusCode: {
      401: function (response) {
         // redirect to login page
      }
   }, 
   success: function (data) {
      $( "#timesheets" ).html(data);
   },
   error: function (error) {
      console.log('Error occured: ', error);
   }
});

PHP代码:

if (!isset($_SESSION['login_user'])) {
    header("HTTP/1.1 401 Unauthorized");
    return;
}

我不测试此代码,因此如果您遇到问题,请阅读有关AJAX请求的jQuery文档:)