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

Posted

技术标签:

【中文标题】在页面重新加载/刷新时重置会话?【英文标题】:Sessions being reset on page reload/refresh? 【发布时间】:2016-06-26 01:03:01 【问题描述】:

我正在使用 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 语句之前echoing 会话值,尽管它总是空白。

我已经确定的事情:

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

它在 MAMP 上运行而不是在我的 AWS 服务器上运行似乎很奇怪。

【问题讨论】:

【参考方案1】:

我或多或少有同样的问题。 是服务器中安装的 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);

【讨论】:

以上是关于在页面重新加载/刷新时重置会话?的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在不重新加载页面的情况下重置 r 中的页面或对象吗

ReactJS如何在刷新页面时维护State值

刷新/重新加载Angular 2 Web App

Rails 仅在生产时才在页面重新加载时丢失会话变量 current_user_id(React 16.13、Rails 6、Heroku)

如何创建不会在页面重新加载时重置的 JSP 变量

Redux 状态在窗口重新加载时重置(客户端)