为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
MYYA 2023-04-14 14:10:04
以下这段代码保存为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


查看完整回答
反对 回复 2023-04-17
?
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']的,不能保证这个值一定能取到。


查看完整回答
反对 回复 2023-04-17
  • 2 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信