我传统上使用filter_var()
函数对 $_GET
和 $_POST
数据进行净化,例如:
$foo = filter_var($_GET['foo'], FILTER_SANITIZE_NUMBER_INT);
但是 PHP 也有一个函数 filter_input()
,它有不同的语法来实现同样的功能:
$foo = filter_input(INPUT_GET, 'foo', FILTER_SANITIZE_NUMBER_INT);
这些只是同义词吗?使用它们有什么优势吗?
我查了手册,但没看到很大的区别(只有报告错误的方式/是否)。从语义/最佳实践的角度来看,哪个更合理?
filter_var
可以接受任何变量,所以您必须自己检查未定义的变量错误。相反,filter_input
使用$_GET
、$_POST
、$_COOKIE
、$_ENV
或$_SERVER
的原始值,这意味着对这些变量所做的任何修改都不会被考虑在内。参见 https://secure.php.net/manual/en/function.filter-input.php#115086。 - Charlotte Dunois