最近我的托管服务提供商决定从PHP版本5.4升级到5.6版本,之后我遇到了我在登录系统中使用的会话问题 .

登录系统很简单,在检查用户名和密码后,会设置会话变量并将用户重定向到受保护的页面 . 在那里,将检查是否设置了所提到的会话变量以决定是否必须显示页面或者是否必须将用户重定向到登录页面 .

正如所建议的那样,几天前一切正常!但是,当用户尝试立即登录并重定向到受保护页面时,他将被发送回登录页面,可能是因为PHP升级导致会话出现问题 .

以下是代码的一些部分 .

<?php
//login page
session_start();
if ($check >= 1)
// If combination user name password is correct.
{
  session_regenerate_id(TRUE);
  $_SESSION['logged_in'] = TRUE;
  header('Location: /');
  exit();
}
?>

<?php
// protected page
session_start();
if (!isset($_SESSION['logged_in']))
// User not logged in.
{
  session_unset();
  if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
      $params["path"], $params["domain"],
      $params["secure"], $params["httponly"]
    );
  }
  session_destroy();
  header('Location: /login');
}
else
// Logged in, show page.
{
  // page
}
?>