PHP $ _SESSION覆盖变量未传递到下一页

时间:2014-07-31 16:56:40

标签: php session-variables register-globals

问题:在下面的代码中,当我从sandbox1页面移动到sandbox2时,$ _SESSION [page_name]的新值未被传递并恢复为index的初始值。如果在进入页面后我重新加载页面,新值似乎神奇地显示出来。代码有问题吗?你能解释为什么$ _SESSION的新值没有传播吗?

Page index.php

<?php
session_start(); 
$_SESSION['page']="index";
echo "This page: ".$_SESSION['page']."<br><br>";
?>

页面sandbox1.php

<?php
session_start(); 
echo "From page: ".$_SESSION['page']."<br>";    
$_SESSION['page']="Sandbox1";
echo "This page: ".$_SESSION['page']."<br><br>";
?>

页面sandbox2.php

<?php
session_start(); 
echo "From page: ".$_SESSION['page']."<br>";
$_SESSION['page']="Sandbox2";
echo "This page: ".$_SESSION['page']."<br><br>";
?>

在加载index.php时,它会输出:

  

此页面:index

正如所料。

从index.php到Sandbox1输出的超链接

  

来自页面:index

     

此页面:Sandbox1

(新值$_SESSION['page'])符合预期。

从Sandbox1到Sandbox2输出的超链接:

  

来自页面:index

$_SESSION恢复到价值指数)预计会看到

  

来自页面:sandbox1

     

此页面:Sandbox2

(新值)如预期。

其他信息PHP版本5.3。注册全局设置为“关闭”

2 个答案:

答案 0 :(得分:6)

在sandbox1和sandbox 2上,将session_start()移到读取行

的上方
echo "From page: ".$_SESSION['page']."<br>";

答案 1 :(得分:1)

问题已解决。 PHP代码运行正常。问题似乎只影响IE 11,并且与此浏览器的刷新周期有关。其他浏览器显示出预期的输出。通过更改Apache服务器.htaccess文件以阻止捕获用于调试的测试文件,问题是正确的。

调查IE-11或此浏览器的特定测试平台配置是否存在问题。

相关问题