标头重定向后PHP $ _SESSION为空

时间:2011-02-21 16:50:29

标签: php session redirect header

当我执行标头重定向时,我正在丢失$ _SESSION中的数据。当我使用调试器完成此操作时,我可以在退出()之前在$ _SESSION中看到所有数据;

Login.php:

...

if($result == 1){       
    header("Location: /myaccount.php");
    session_write_close();
    exit();
} else {
    header("Location: /login.php?invalid=yes");
    exit();
} 

然后我在下面的session_start()条件之后放置一个断点,$ _SESSION完全为空。

myaccount.php:

<?php
if(!isset($_SESSION['user_id'])) { session_start(); }

$docRoot = getenv("DOCUMENT_ROOT");
...

我的会话在哪里?

3 个答案:

答案 0 :(得分:7)

确保在session_start();

上的if语句之前使用函数myaccount.php

答案 1 :(得分:1)

您应该在访问(即读取或写入)session_start()的每个页面上调用$_SESSION,并在访问会话数组之前调用它。因此,请务必在两个页面上调用session_start()

答案 2 :(得分:1)

是的,不要删除帖子......我的确有同样的问题,这篇帖子让我不由自主地用手掌敲打前额。它解决了问题(我的代码就是,而不是我的愚蠢)。干杯!