我正在运行一个apache2服务器,我在那里进行localhost测试(PHP 5.5),但我的托管服务提供商有PHP 5.3。我不知道这是否是一个问题,但我提到以防万一。
我的问题是:
我想要注意几个$ _SERVER变量,但filter_input()
函数由于某种原因返回false,但仅在我的主机服务器上。它在localhost上工作正常。
回声验证预期输出:
echo $_SERVER['HTTP_USER_AGENT'];
echo $_SERVER['REMOTE_ADDR'];
按预期退货:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36
90.10.160.140 (Not the actual address)
但是当我使用过滤器时(即使没有指定过滤器/选项!),两者都是空白的:
filter_input(INPUT_SERVER,'HTTP_USER_AGENT',FILTER_SANITIZE_ENCODED,FILTER_FLAG_STRIP_LOW);
filter_input(INPUT_SERVER,'REMOTE_ADDR',FILTER_VALIDATE_IP);
filter_input(INPUT_SERVER,'HTTP_USER_AGENT');
filter_input(INPUT_SERVER,'REMOTE_ADDR');
以上所有内容在我的托管服务提供商上执行时返回一个空字符串/ FALSE,但在我的localhost上按预期工作。
我猜测主机上有一些配置参数设置不同。知道哪一个?或者还有什么可能是什么问题? 感谢。
答案 0 :(得分:6)
我有同样的问题,我无法告诉你为什么它返回一个空字符串/ FALSE但是对我来说使用INPUT_ENV
代替INPUT_SERVER
确实有效并且返回相同的IP-地址为$_SERVER['REMOTE_ADDR']
。同样适用于HTTP_USER_AGENT
。简短的例子:
$REMOTE_ADDR = filter_input(INPUT_ENV, 'REMOTE_ADDR', FILTER_VALIDATE_IP);
答案 1 :(得分:1)
我的猜测与此错误相关:https://github.com/wp-stream/stream/issues/254
尝试在代码上使用错误修复作为解决方法