Разница между filter_var и filter_input при проверке входных данных

В чем разница между использованием одной из этих двух функций при проверке пользовательского ввода? Строго говоря, о вызовах функций, например, нет необходимости изменять массив $ _POST.

$ result = filter_var ($ _ POST [‘user_input’], FILTER_VALIDATE_INT);

против

$ result = filter_input (INPUT_POST, ‘user_input’, FILTER_VALIDATE_INT);

Или нет никакой разницы между двумя вышеупомянутыми вызовами, даже не в плане производительности, а скорее в вопросе предпочтений?

PS: я знаю, что есть аналогичный вопрос на SO — Различия между filter_var и filter_input — но это просто говорит о том, как должны быть вызваны 2 метода, а не о том, какова реальная разница.

4

Решение

Если тело запроса не содержит параметр user_input совсем, $_POST['user_input'] вызовет уведомление, filter_input(INPUT_POST, 'user_input', ..) не будет.

0

Другие решения

Из того, что я прочитал на php.net,

filter_var будет просто работать для любой переменной в вашем коде, всякий раз, когда вы ее используете, она будет проверять значение в этот момент.

filter_input значение проверит исходные значения ваш вклад, означающий, что если вы измените $_POST['something'], filter_input(INPUT-POST, "something", FILTER) выполнит проверку значения, которое было до того, как вы его изменили.
Это также, кажется, не вызывает E_NOTICE на выполнение, когда значение не установлено.

Ссылочный пост на php.net

4

По вопросам рекламы [email protected]