以下这段代码保存为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的值改为其他值相应也会输出同样的值如图:
2 回答
慕容3067478
TA贡献1773条经验 获得超3个赞
关键在
<img src="notice" />
浏览器访问的时候加载了/test.php/notice
这时候就触发了test.php,
$_SESSION['test'] = $_SERVER['PATH_INFO']; //此时为notice
所以即使你再刷新, 第一次打印的也是notice
UYOU
TA贡献1878条经验 获得超4个赞
第一次var_dump($_SESSION['test']);时,会触发notice,建议严谨一下例如:
if(isset($_SESSION['test'])){ var_dump($_SESSION['test']); }
另外在用chrome时切换到network功能,会发现有一次 http://127.0.0.1/notice 请求。
nginx默认是不支持$_SERVER['PATH_INFO']的,不能保证这个值一定能取到。
- 2 回答
- 0 关注
- 91 浏览
添加回答
举报
0/150
提交
取消