php - 刷新页面后会话丢失

时间:2014-06-25 14:36:24

标签: javascript php jquery html session

所以我正在为我的网站开发一个登录系统,我想在用户登录时更改导航栏,但我无法让它工作,因为在我刷新页面以更新后,会话不断丢失导航栏。这是我在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。有什么想法怎么办?谢谢!

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

首先,不需要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';

答案 2 :(得分:1)

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