PHP - 在执行header()时未设置会话变量

时间:2016-07-18 15:06:11

标签: php session variables header

我一直在网上进行深入研究,寻找这个错误的解决方案,但我还无法修复它。 我来介绍一下情况:

SCRIPT1.php:

if(isset($_SESSION['LoadFile'])){
    echo "<span>";
    $MsgId = 91;
    $Msg = GetMsg($language, $MsgId);
    echo $Msg . " ";
    echo "<input name=\"Fleet\" id=\"Fleet\" type=\"file\" />";
    echo "</span>";
}else{
echo "<span>";
    $MsgId = 169;
    $Msg = GetMsg($language, $MsgId);
    echo $Msg . " ";
    $MsgId = 22;
    $Msg = GetMsg($language, $MsgId);
    echo "<a href=\"".$linkpath."inc_load_file.php\">".$Msg."</a>";
echo "</span>";
}

inc_load_file.php内容:

<?php
$_SESSION["LoadFile"] = "Load, please";
$_SESSION["ShowLoadingOpt"] = "Show";
//echo $_SESSION["LoadFile"] <---This works correctly, the variable is being properly created.
header("Location: ".$_SESSION["PrevLoc"]);
exit;
?>

请注意,如果我在print_r($_SESSION)的请求中Script1,则会显示以下结果:

Array ( [UID] => 1 [UName] => Santi [USurname] => Márquez [ULvl] => 1 [ULang] => en_Gb [Logged] => 1 [UEmail] => xxx@xxx.com [User] => smarquez [UCreationDate] => 2015-10-14 [UAccessTimes] => 162 [UALDesc] => Administrator [CountryCodeKPIReportsGenerator] => 2 )

我的网页应该显示如下消息:

&#34;已加载文件。如果您要加载新文件,请点击此处。&#34;

如果单击链接,则会执行inc_load_file.php。它会创建session variables并返回script1.php。完成后,网页应显示文件输入,但实际上,它仍显示链接。未设置session变量。

在执行session header()后,您能否帮我检查一下为什么在inc_load_file.php中创建的function变量没有被正确返回?

非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

  1. 在您尝试访问session_start()之前以及在向浏览器输出任何内容之前,在脚本开头添加$_SESSION
  2. $_SESSION["PrevLoc"]在哪里设置?您在“位置”标题中使用它,但我们没有看到您设置其值。

答案 1 :(得分:1)

感谢您的回答:) 我正在使用wamp,会话自动启动。 它正确启动,这就是为什么我能够将所有这些数据保存在$ _SESSION数组中:

[UID] => 1
[UName] => Santi 
[USurname] => Márquez 
[ULvl] => 1 
[ULang] => en_Gb 
[Logged] => 1 
[UEmail] => xxx@xxx.com 
[User] => smarquez 
[UCreationDate] => 2015-10-14 
[UAccessTimes] => 162 
[UALDesc] => Administrator 
[CountryCodeKPIReportsGenerator] => 2

所以,问题不在于会话创建。它已正确创建,但在Header()之后未设置$ _SESSION [“LoadFile”]和$ _SESSION [“ShowLoadingOpt”]。

另一方面,$ _SESSION [“PrevLoc”]将内容放在用户所在的上一页。由于安全原因,我从print_r结果中删除了一些变量。无论如何,我也试过使用$ _SERVER ['HTTP_REFERER'],但它也没有用。

再次感谢您的支持:)