输入数据验证时filter_var和filter_input之间的差异

时间:2016-07-14 12:17:17

标签: php performance validation filter-var filter-input

验证用户输入时,使用这两个功能之一的区别是什么?严格来说,关于函数调用,没有必要更改$ _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 - 但这只是说明应该如何调用这两种方法,而不是实际差异是什么。

2 个答案:

答案 0 :(得分:4)

从我在php.net上看到的,

filter_var只适用于代码中的任何变量,无论何时使用它,它都会检查当时的值。

filter_input值会检查输入的原始值,这意味着如果您更改$_POST['something'],则filter_input(INPUT-POST, "something", FILTER)会对值进行检查它在你改变它之前。 当没有设置值时,它似乎也没有在执行时触发 E_NOTICE

php.net

上的参考文章

答案 1 :(得分:0)

如果请求正文根本不包含参数user_input$_POST['user_input']会触发通知,filter_input(INPUT_POST, 'user_input', ..)则不会。