刷新页面后会话丢失

session lost after refreshing page

本文关键字:会话 刷新      更新时间:2023-09-26

所以我正在为我的网站开发一个登录系统,我想在用户登录时更改导航栏,但我无法让它工作,因为我刷新页面更新导航栏后,会话一直在丢失。这是我在login.php脚本中得到的内容:

if ($loginNumRows == 1) {
   echo 'true';
   session_start();
   $_SESSION['username'] = $loginRow['name'];

当返回'true'时,将加载以下javascript:

if (html == 'true') {
    window.location.href = "index.php";

我尝试了"location.reload(true);",它仍然是一样的。在导航栏所在的主页中,我做了以下检查:

<?php if (isset($_SESSION))
            {...}

然而,这总是返回false。有什么主意吗?谢谢!

首先,不需要javascript将您重定向到索引页。你也可以在PHP中这样做:

header("Location: index.php");

所以login。php是这样的

if ($loginNumRows == 1) {
   session_start();
   $_SESSION['username'] = $loginRow['name'];
   header("Location: index.php");

注意,我已经改变了顺序。与其他一样,我强烈建议将会话启动置于所有代码之上。

最后确保在index.php文件中也启动了会话(这也应该放在所有代码的上方):

session_start();

编辑:如果你想坚持你的javascript方法(我强烈不建议),那么你的login.php代码应该看起来像这样:

if ($loginNumRows == 1) {
   session_start();
   $_SESSION['username'] = $loginRow['name'];
   echo 'true';

确保您在所有脚本的顶部都有session_start();

如上所述,我首先将session_start()放在页面上的所有其他代码之上,而不是条件语句中。