刷新页面后会话丢失
session lost after refreshing page
所以我正在为我的网站开发一个登录系统,我想在用户登录时更改导航栏,但我无法让它工作,因为我刷新页面更新导航栏后,会话一直在丢失。这是我在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()放在页面上的所有其他代码之上,而不是条件语句中。
相关文章:
- PHP会话页面刷新不起作用
- Node.js:每次刷新/访问时都会有新的会话
- 如何在Ruby on Rails会话过期时重新加载或刷新页面
- 当用户刷新页面时,如何在单独的服务器中处理socket.io上的会话
- 为什么php页面刷新发布会话变量
- 在 ajax 调用期间刷新页面正在破坏 php 会话
- JQuery ,replaceWith() 从 iframe 写入会话后不起作用,除非页面刷新
- 避免页面刷新并向 JavaScript 会话添加值
- 跨域刷新后会清除会话值
- 有没有办法让Javascript在点击刷新后重定向页面(会话已经过期)
- 如何在点击事件后更改会话值,以便页面刷新不会重置Meteor上的会话
- 强制刷新Facebook会话
- 在angular js中刷新页面时保持会话
- 在刷新页面之前不会设置会话属性
- “会话在浏览器刷新时过期”按钮
- 从服务器部分刷新一个R会话
- 刷新页面后会话丢失
- 显示会话var而不刷新页面
- 如何删除所有会话存储,其关键字是一些字符"abc"当页面刷新时
- ASP(经典)/IIIS 7.5-您可以在不刷新会话的情况下检查会话是否超时吗