我一直在web上进行深入研究,寻找解决此错误的方法,但我还无法修复它。让我向你介绍一下情况:
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;
?>
注意,如果我在Script1
的乞求中执行print_r($_SESSION)
,它会显示以下结果:
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
)
我的网页应该显示这样的消息:
"文件已加载。如果您想加载新文件,请单击此处。"
如果单击链接,则执行inc_load_file.php
。它创建session
variables
并返回到script1.php
。完成后,网页应该显示一个文件输入,但实际上,它仍然显示链接。未设置session
变量。
你能帮我检查一下为什么在inc_load_file.php中创建的session
变量在执行header()
function
后没有正确返回吗?
事先非常感谢你的帮助。
- 在脚本的开头、尝试访问
$_SESSION
之前以及向浏览器输出任何内容之前添加session_start()
$_SESSION["PrevLoc"]
设置在哪里?您在Location标头中使用它,但我们看不到您设置了它的值
感谢您的回答:)我目前正在使用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'],但都不起作用。
再次非常感谢您的支持:)