В чем разница между использованием одной из этих двух функций при проверке пользовательского ввода? Строго говоря, о вызовах функций, например, нет необходимости изменять массив $ _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 метода, а не о том, какова реальная разница.
Если тело запроса не содержит параметр user_input
совсем, $_POST['user_input']
вызовет уведомление, filter_input(INPUT_POST, 'user_input', ..)
не будет.
Из того, что я прочитал на php.net,
filter_var
будет просто работать для любой переменной в вашем коде, всякий раз, когда вы ее используете, она будет проверять значение в этот момент.
filter_input
значение проверит исходные значения ваш вклад, означающий, что если вы измените $_POST['something']
, filter_input(INPUT-POST, "something", FILTER)
выполнит проверку значения, которое было до того, как вы его изменили.
Это также, кажется, не вызывает E_NOTICE на выполнение, когда значение не установлено.
Ссылочный пост на php.net