在页面重新加载/刷新时重置会话


Sessions being reset on page reload/refresh?

我正在使用 AWS 和 Ubuntu LAMP 堆栈。我通常只是在Mac上使用MAMP来测试内容并使用GoDaddy等托管托管服务,所以这是我第一次使用AWS。我的老开发人员为我设置了 AWS,因此从那时起我就接管了这项工作。

我的代码在 MAMP 上运行良好,尽管无法在 AWS 上运行。

当用户尝试登录时,我会调用用 PHP 编写的 RESTful API 来验证登录并在成功时设置会话变量。然后我刷新页面并检查会话是否已设置,如果已设置,我将加载不同的 php 文件。

这是我的整个index.php文件:

session_start();
if ($_SESSION['user_login_status'] == 1) {
    include("app.php");
} else {
    include("login.php");
} 

在刷新过程中,似乎我的会话变量被销毁/重置。我尝试在 if 语句之前echo会话值,尽管它始终为空。

我已经确定的事情:

  • 我在 php 文件的最顶部设置session_start(),所以这不可能是问题。
  • 我通过SSH连接以访问php.ini文件并检查了
    session.gc_maxlifetime 1440

它适用于 MAMP 而不是我的 AWS 服务器似乎很奇怪。

我或多或少遇到了同样的问题。是服务器中安装的PHP版本造成了错误。要解决它,就这样做

session_start();
if ($_SESSION['user_login_status'] !== 1) {
    include("login.php");
} else {
    include("app.php");
}

session_start();
if ($_SESSION['user_login_status'] != 1) {
     include("login.php);
} else {
     include("app.php");
}

session_start();
if ($_SESSION['user_login_status'] === 1) {
     include("app.php");
} else {
     include("login.php);
}