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

时间:2016-03-10 23:06:49

标签: php session ubuntu amazon-web-services lamp

我正在使用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");
} 

在刷新期间,似乎我的会话变量被销毁/重置。我在echo语句之前尝试if会话值,尽管它总是空白的。

我确定的事情:

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

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

1 个答案:

答案 0 :(得分:1)

我或多或少有同样的问题。 它是安装在服务器中的PHP版本的bug。 要解决它,就像这样做

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

OR

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

OR

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