Я добавляю некоторый код в устаревший PHP, чтобы использовать filter_input_array()
для проверки параметров по URL-адресу запроса AJAX.
Закодировав функцию, я, естественно, хотел ее протестировать.
Я нахожусь на работе, размещая о некотором коде, который я написал дома, поэтому были вынуждены воспроизвести основные моменты из воспоминаний. Этот код, однако, отражает проблему, которая у меня была дома (более ясным образом, чем мой домашний код).
Мой 'тест' быстро & грязный. Одна страница PHP неоднократно очищает $_GET
(освобождая ее и обновляя ее), добавляет к ней некоторые параметры и вызывает filter_input_array()
.
Я начинаю задаваться вопросом, что действительно ...
<?php
echo('$_GET, at start of script<br>');
var_dump($_GET);
echo('<hr>');
echo('unset($_GET), then dump it()obviously, we expect an error<br>');
unset($_GET);
var_dump($_GET);
echo('<hr>');
echo('Now, define $_GEt as an array, and add a few items, and validate it<br>');
$_GET = array();
$_GET['one'] = 1;
$_GET['two plus two'] = 5;
var_dump($_GET);
echo('<hr>');
echo('Now, attempt to validate the $_GET<br>');
$fileters = array('one' => FILTER_VALIDATE_INT,
'two plus two' => FILTER_VALIDATE_INT,
);
$validateGet = filter_input_array(INPUT_GET, $fileters, false);
echo('Validation result = ');
var_dump($validateGet);
?>
дает
$ _GET, в начале массива сценария (0) {}
снята с охраны ($ _GET), затем сбрасываем его(), очевидно, ожидаем ошибку E_NOTICE:
тип 8 - неопределенная переменная: _GET - по строке 8 NULLТеперь определите $ _GEt как массив и добавьте несколько элементов и подтвердите его.
array (2) {["one"] => int (1) ["two plus two"] => int (5)}Теперь попытка для проверки $ _GET
проверки результата = NULL
1), что происходит не так с filter_input_array()
?
2) почему возникает результат null
, когда в документации указано, что это будет false
при отказе? Кого я должен проверять? В настоящее время я использую if $validateGet === false
это действительно плохая практика, чтобы использовать суперглобальные ('$ _GET, $ _POST, $ _REQUEST') таким образом. Вы должны использовать их как readonly vars. см. http://softwareengineering.stackexchange.com/a/76410/251694 –
Документация также говорит 'или NULL, если переменная не установлена ', поэтому ваш' $ _GET' определенно не соответствует запросу 'filter_input_array'. –