为何手动设置的$_SERVER条目无法被filter_input读取?
PHP中filter_input无法读取手动设置的$_SERVER值的原因
问题现象
- 手动设置
$_SERVER['foo'] = 'bar'后,直接访问$_SERVER['foo']能正常输出bar - 使用
filter_input(INPUT_SERVER, 'foo')或filter_input_array(INPUT_SERVER)读取该值,返回结果为空 - 仅
filter_var_array($_SERVER)可以正常读取到手动设置的foo值
原因解析
filter_input和filter_input_array函数不直接操作$_SERVER超全局数组,它们读取的是PHP进程启动时就已初始化的原始服务器环境变量副本,这个副本不会随着你后续修改$_SERVER数组的内容而同步更新。
而filter_var_array是直接以你传入的$_SERVER数组(已经过手动修改)作为处理对象,所以能读取到你新增的键值对。
内容的提问来源于stack exchange,提问作者erg
相关产品推荐
相关产品推荐

