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

PHP会话变量在标头重定向后丢失,php,Php,我想不出来。有时在重定向之后(参见下面的代码),会话变量会丢失。有什么想法吗 请注意,最初使用?p=1&u=2&k=3调用脚本。 如您所见,脚本重定向到自身。会话变量在重定向后丢失 <?php session_start(); if ((isset($_SESSION['p'])) and ($_SESSION['p'] != "")) { // do something } else { $_SESSION['p'] = $_GET['p']; $_SESSI

我想不出来。有时在重定向之后(参见下面的代码),会话变量会丢失。有什么想法吗

请注意,最初使用?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();
}

?>


干杯

复制并粘贴了您的代码,对我来说效果很好。
在你的
之前,你可能有一些空格或其他什么吗?我不知道为什么会这样

您的
php.ini
文件可能有一些配置错误

或者您没有正确的
会话。请保存路径
或在那里写入的权限

但如果问题仍然存在,请尝试以下方法:

<?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

?>


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

您是否正在尝试访问另一个脚本中的$\u会话变量?如果是这种情况,请确保调用session_start();为什么要将HTTP_主机分配给会话变量?你确定要在所有脚本上调用session_start()吗?想法相同,但根据他的说法,由于他再次重定向到同一个脚本,这应该不是问题。嗨,伙计们,谢谢你们的回复。我重定向到同一个脚本。这是唯一的脚本。谢谢你的回复。没有空间。问题是这种情况只是偶尔发生。非常令人沮丧!在测试/开发期间:是否调用同一服务器上的任何其他PHP脚本?这还包括与您在此处发布的脚本没有任何关系的脚本。请确保我的服务器上运行许多脚本。他们中的一些人使用会话。您认为这会导致问题吗?不应该是,但可能是一些脚本,例如,与您的会话cookie冲突。顺便说一下:您可以检查是否设置了会话cookie。如果没有,您应该在php.ini中启用它。