PHP$\u会话覆盖的变量未传递到下一页

PHP$\u会话覆盖的变量未传递到下一页,php,session-variables,register-globals,Php,Session Variables,Register Globals,问题:在下面的代码中,当我从页面从sandbox1移动到sandbox2时,$\u SESSION[page\u name]的新值没有被传递,并返回到index的初始值。如果在进入页面后我重新加载页面,新值似乎会神奇地显示出来。代码有问题吗?您能解释一下为什么$\u会话的新值没有传播吗 Page index.php <?php session_start(); $_SESSION['page']="index"; echo "This page: "

问题:在下面的代码中,当我从页面从sandbox1移动到sandbox2时,$\u SESSION[page\u name]的新值没有被传递,并返回到index的初始值。如果在进入页面后我重新加载页面,新值似乎会神奇地显示出来。代码有问题吗?您能解释一下为什么$\u会话的新值没有传播吗

Page index.php

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

页面sandbox1.php

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

页面sandbox2.php

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

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

本页:索引

正如所料

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

从第页:索引

此页面:沙盒1

(新值
$\u会话['page']
)如预期

从Sandbox1到Sandbox2输出的超链接:

从第页:索引

$\u会话
还原到值索引)预计会看到

来自第页:sandbox1

本页:沙盒2

(新值)如预期


附加信息PHP版本5.3。寄存器全局设置为“关闭”

在sandbox1和Sandbox2上,将
会话\u start()
移到读取的行上方

echo "From page: ".$_SESSION['page']."<br>";
echo”来自页面:“.$\u会话['page']。”
”;
问题已解决。PHP代码运行正常。该问题似乎只影响IE 11,与此浏览器的刷新周期有关。其他浏览器显示了预期的输出。通过更改Apache server.htaccess文件以禁止捕获用于调试的测试文件,问题得到了纠正


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

您在检查后调用了
session\u start()
。感谢您的建议。我确实将session_start()移动到了sandbox1和sandbox2中的第一行,结果相同。$会话的新值将恢复为index.Len\u D-谢谢。。。我共享的代码是每个页面中的第一行代码。正如您所看到的,所有html都位于所示php代码的下方。我确实在sandbox1和sandbox2中将会话_start()移动到了第一行,结果相同。$\会话的新值仍在恢复为值索引。(请参阅相关的更正代码)–有时写入会话变量时可能会出现延迟。尝试以下操作:在为页面设置会话变量后,在每个脚本中添加以下行:session_write_close();然后检查tghe session var.Len_的值,我尝试一下您的建议,添加session_write_close();全部三页。没有改变相同的结果我还测试了iPage和GoDaddy服务器中的页面,得到了相同的结果。我还在这两个版本的PHP中测试了PHP4.3和5.2中的页面,$\u SESSION参数根本没有传递。请参阅下面问题的解决方案。感谢您的建议,它们帮助我使应用程序代码更加健壮。