为什么$_SESSION['test']变成了'notice'?

以下这段代码保存为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的值改为其他值相应也会输出同样的值

如图:

http://img2.mukewang.com/643d25570001bcb613320742.jpg

MYYA
浏览 92回答 2
2回答

慕容3067478

关键在<img&nbsp;src="notice"&nbsp;/>浏览器访问的时候加载了/test.php/notice这时候就触发了test.php,$_SESSION['test']&nbsp;=&nbsp;$_SERVER['PATH_INFO'];&nbsp;//此时为notice所以即使你再刷新, 第一次打印的也是notice

UYOU

第一次var_dump($_SESSION['test']);时,会触发notice,建议严谨一下例如:if(isset($_SESSION['test'])){&nbsp;&nbsp;&nbsp;&nbsp;var_dump($_SESSION['test']); }另外在用chrome时切换到network功能,会发现有一次&nbsp;http://127.0.0.1/notice&nbsp;请求。nginx默认是不支持$_SERVER['PATH_INFO']的,不能保证这个值一定能取到。
打开App,查看更多内容
随时随地看视频慕课网APP