php - 刷新页面后会话丢失[重复]
Posted
技术标签:
【中文标题】php - 刷新页面后会话丢失[重复]【英文标题】:php - session lost after refreshing page [duplicate] 【发布时间】:2014-08-16 04:31:47 【问题描述】:所以我正在为我的网站开发一个登录系统,我想在用户登录时更改导航栏,但我无法让它工作,因为在我刷新页面以更新导航栏。这是我在 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。任何想法该怎么做?谢谢!
【问题讨论】:
你把session_start();
放了吗
session_start()
必须在每个访问的页面中,最好在脚本的开头。
@Lix 我在索引页上说的是
将 session_start() 放在页面顶部。
【参考方案1】:
首先,不需要 javascript 将您重定向到索引页面。你也可以用 PHP 来做:
header("Location: index.php");
所以 login.php 将如下所示:
if ($loginNumRows == 1)
session_start();
$_SESSION['username'] = $loginRow['name'];
header("Location: index.php");
请注意,我已更改顺序。与其他人一样,我强烈建议将 session start 置于所有代码之上。
最后确保你已经在 index.php 文件中启动了会话(这也应该放在你所有的代码之上):
session_start();
编辑:如果您想坚持使用您的 javascript 方法(我强烈不推荐),那么您的 login.php 代码应该如下所示:
if ($loginNumRows == 1)
session_start();
$_SESSION['username'] = $loginRow['name'];
echo 'true';
【讨论】:
【参考方案2】:如前所述,我首先将 session_start() 放在页面上的所有其他代码之上,而不是在条件语句中。
【讨论】:
【参考方案3】:确保所有脚本的顶部都有session_start();
。
【讨论】:
以上是关于php - 刷新页面后会话丢失[重复]的主要内容,如果未能解决你的问题,请参考以下文章