首页 > 开发 > php > 正文

PHP中$_SERVER变量赋值给$_SESSION变量时的注意事项

2017-09-06 15:07:06  来源:网友分享

以下这段代码保存为test.php

<?phpsession_start();var_dump($_SESSION['test']);echo '<br />';$_SESSION['test'] = $_SERVER['PATH_INFO'];var_dump($_SESSION['test']);?><img src="notice" />

在本地测试这段代码,访问url http://localhost/test.php/a
$_SERVER['PATH_INFO']的值是'/a',赋值后$_SESSION['test']的值是'/a',页面刷新后,在页面开头输出$_SESSION['test']理论上应该也是'/a',可是$_SESSION['test']变成了'notice'。

其中notice的值同<img src="notice" />中src的值,src的值改为其他值相应也会输出同样的值

如图:

解决方案

关键在

<img src="notice" />

浏览器访问的时候加载了/test.php/notice
这时候就触发了test.php,

$_SESSION['test'] = $_SERVER['PATH_INFO']; //此时为notice

所以即使你再刷新, 第一次打印的也是notice