4

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

4

2 回答 2

4

根据我在 php.net 上阅读的内容,

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

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

php.net上的参考帖子

于 2016-07-14T12:25:10.887 回答
0

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

于 2016-07-14T12:22:02.760 回答