标题重定向后PHP会话变量丢失

时间:2014-09-12 14:47:36

标签: php

我无法弄清楚这一点。有时在重定向之后(参见下面的代码),会话变量会丢失。有什么想法吗?

注意,最初使用?p = 1& u = 2& k = 3调用脚本。 如您所见,脚本重定向到自身。会话变量在重定向后会丢失。

<?php

session_start();

if ((isset($_SESSION['p'])) and ($_SESSION['p'] != "")) {
    // do something
} else {
    $_SESSION['p'] = $_GET['p'];
    $_SESSION['w'] = $_SERVER["HTTP_HOST"];
    $_SESSION['u'] = $_GET['u'];
    $_SESSION['k'] = $_GET['k'];

    header("Location: http://".$_SESSION['w'].$_SERVER['PHP_SELF']."");
    exit();
}

?>

干杯

2 个答案:

答案 0 :(得分:0)

复制并粘贴您的代码,它对我来说效果很好。 你可能在<?php - 标签之前有空格或其他什么吗?

答案 1 :(得分:0)

我不确定为什么会这样。

您的php.ini文件可能存在错误配置。

或者你没有正确的session.save_path或权限来写那里。

但如果问题仍然存在,请尝试这种方式:

<?php

session_start();

if (!$_SESSION['p']) {
    $_SESSION['p'] = $_GET['p'];
    $_SESSION['w'] = $_SERVER["HTTP_HOST"];
    $_SESSION['u'] = $_GET['u'];
    $_SESSION['k'] = $_GET['k'];
}

//code comes here

?>

在我看来,这就是应该做的事情。