验证用户输入时,使用这两个功能之一的区别是什么?严格来说,关于函数调用,没有必要更改$ _POST数组。
$ result = filter_var($ _ POST [' user_input'],FILTER_VALIDATE_INT);
vs
$ result = filter_input(INPUT_POST,' user_input',FILTER_VALIDATE_INT);
或者上述两个电话之间没有区别,甚至表现不明智,而只是偏好?
PS:我知道SO上有一个类似的问题 - Differences between filter_var and filter_input - 但这只是说明应该如何调用这两种方法,而不是实际差异是什么。答案 0 :(得分:4)
从我在php.net上看到的,
filter_var
只适用于代码中的任何变量,无论何时使用它,它都会检查当时的值。
filter_input
值会检查输入的原始值,这意味着如果您更改$_POST['something']
,则filter_input(INPUT-POST, "something", FILTER)
会对值进行检查它在你改变它之前。
当没有设置值时,它似乎也没有在执行时触发 E_NOTICE 。
答案 1 :(得分:0)
如果请求正文根本不包含参数user_input
,$_POST['user_input']
会触发通知,filter_input(INPUT_POST, 'user_input', ..)
则不会。