Я запускаю сервер apache2, где выполняю локальное тестирование (PHP 5.5), но мой хостинг-провайдер имеет PHP 5.3. Я не знаю, является ли это проблемой, но я упоминаю это на всякий случай.
Моя проблема заключается в следующем: я хочу отметить пару переменных $ _SERVER, но filter_input()
по какой-то причине возвращает false, но только на моем хост-сервере. Он отлично работает на локальном хосте.
Echoing проверяет ожидаемый результат:
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, когда выполняется на моем хостинг-провайдере, но работает как ожидается на моем локальном хосте.
Я предполагаю, что есть некоторый параметр конфигурации, установленный по-разному на хосте. Любая идея какая? Или что еще может быть? Благодарю.
У меня была та же проблема, я не смогу сказать вам, почему она возвращает пустую строку / FALSE, но для меня использование INPUT_ENV
вместо INPUT_SERVER
действительно работало и возвращает тот же IP-адрес, что и $_SERVER['REMOTE_ADDR']
. То же самое касается HTTP_USER_AGENT
. Краткий пример:
$REMOTE_ADDR = filter_input(INPUT_ENV, 'REMOTE_ADDR', FILTER_VALIDATE_IP);
Мое предположение было бы связано с этой ошибкой: https://github.com/wp-stream/stream/issues/254
Попробуйте использовать исправление для кода в качестве обходного пути