【问题标题】:Why isn't my SESSION data being updated after POSTing to the same page?为什么我的 SESSION 数据在 POST 到同一页面后没有更新?
【发布时间】:2011-07-10 20:54:22
【问题描述】:

我试图弄清楚为什么会发生这种情况。我会让用户成为@login.php 并输入他们的登录凭据,如下面的面板 (1) 所示。

然后在成功地将他们的凭据与存储在数据库中的凭据进行匹配后,我将分配一个 $_SESSION['username'] 变量并将页面发布到自身(action=""),然后我会提醒已设置会话变量的用户。

理想情况下,我不想提醒用户会话变量已设置,而只需在他们单击登录后立即自动开始使用该 $_SESSION['username'] 变量(并成功验证)。

我怎样才能做到这一点?我试图通过放置类似的东西来弄乱标题

<? if (isset($_SESSION['username'])) {
header("Location: index.php");
exit();
?>

但我不断收到 headers already sent 错误,因为某些输出(如我的 CSS、JS 文件)在 login.php 页面上的表单验证逻辑之前。

【问题讨论】:

  • 为什么不在所有其他内容输出之前将您的header() 移动到页面顶部?
  • @Kyle,我可能是。从来没有这样想过。

标签: php session post redirect header


【解决方案1】:

操作顺序。

将你的会话创建和有效性测试放在页面的最顶部,这样页面的其余部分就可以判断$_SESSION['username']是否存在

(您可能正在尝试在内容区域内验证它们,以便您的“yay”或“ney”消息出现在文档的所需部分。漂亮,是的,但整个上半部分该页面看不到它[可能]是一个有效的会话。)

【讨论】:

  • 太棒了!做到了。谢谢!我想它更有效,但确实看起来有点混乱。
  • @bob_cobb:您始终可以将显示文本存储在变量中,然后将其输出到您想查看的位置。 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 2015-01-18
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-10
相关资源
最近更新 更多