所以我正在为我的网站开发一个登录系统,我想在用户登录时更改导航栏,但我无法让它工作,因为在我刷新页面以更新后,会话不断丢失导航栏。这是我在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。有什么想法怎么办?谢谢!
答案 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()置于页面上的所有其他代码之上,而不是条件语句中。