2016-01-10 3 views
2

filter_input(INPUT_SERVER, 'REQUEST_TIME') ничего не возвращает.PHP filter_input REQUEST_TIME

в отличие от прямого доступа к $_SERVER['REQUEST_TIME'], который возвращает правильный номер.

Я что-то не так? HTTP_USER_AGENT, например, возвращается нормально.

Я искал его и не нашел, похоже REQUEST_TIME по какой-либо причине не доступен через filter_input.

Протестировано на PHP 5.6 и 7.0.

+0

[Это кажется ошибкой] (https://bugs.php.net/bug.php?id=61497) (с 2012 года!) Быстрая проверка того, что * * доступно вам из '_SERVER': 'var_dump (filter_input_array (INPUT_SERVER));' – Terminus

+0

@ burian.vlastimil Думаю, у меня есть ваш ответ. –

ответ

1

Не цитируйте меня, но что-то вроде этого - ваша проблема. REQUEST_TIME добавляется в $ _SERVER после того, как HTTP REQUEST обрабатывается вашим веб-сервером (или, точнее, модулем PHP). Он не отображается в строке заголовков/запросов HTTP: blah, blah, blah, поэтому вы не можете фильтровать REQUEST_TIME, как вы можете HTTP_HOST, HTTP_USER_AGENT, REQUEST_URI или USER_IP. Я также использую функции фильтра PHP. Чтобы проверить мой псевдо-ответ, используйте ...

if(filter_has_var(INPUT_SERVER, 'REQUEST_TIME')) 
{ 
    echo 'REQUEST_TIME is filterable with filter_input()'; 
} 
else 
{ 
    echo 'TOUGH LUCK'; //Kidding. 
} 

Я только что протестировал это на PHP 5.6.11. Я чувствую, что я прав. Код ответил «TOUGH LUCK». Таким образом, как и SERVER_NAME, REQUEST_TIME является внутренним значением. Разница заключается в том, что SERVER_NAME присутствует во время «волшебного времени». После этого добавляется REQUEST_TIME. Идите фигуру.

Смежные вопросы