PHP$\u会话覆盖的变量未传递到下一页
问题:在下面的代码中,当我从页面从sandbox1移动到sandbox2时,$\u SESSION[page\u name]的新值没有被传递,并返回到index的初始值。如果在进入页面后我重新加载页面,新值似乎会神奇地显示出来。代码有问题吗?您能解释一下为什么$\u会话的新值没有传播吗 Page index.phpPHP$\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: "
<?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参数根本没有传递。请参阅下面问题的解决方案。感谢您的建议,它们帮助我使应用程序代码更加健壮。