看见 PHP Arch 上重新提及 Fliter 模块 ,的确这个模块能节省我们不少的时间,这里再次整理下。

$_GET$_POST 等用户提供的数据如果使用不当,如验证、过滤不全面,就很容易造成安全问题。通常情况下,我们会编写「一坨」正则来验证数据格式是否合法。

现在,有另外种方法让这过程变得更加的可靠和高效。

在 PHP5.2 中,内置了 Filter 模块 ,用于变量的验证和过滤。

过滤变量等操作可以 参看我原先提及的 ,这里我们看下如何直接过滤用户输入的内容。

Fliter 模块对应的 filter_input 函数使用起来非常的简单,例如我们过滤用户输入名为 sample 的 GET 参数为整型,那么可以这样写

filter_input(INPUT_GET, "sample", FILTER_SANITIZE_NUMBER_INT);

filter_input 的参数分别是用户输入类型、对应的输入名称、以及过滤(验证)常量。
目前 filter_input 支持下面几种用户输入

INPUT_GET     // 对应 $_GET
INPUT_POST    // 对应 $_POST
INPUT_COOKIE  // 对应 $_COOKIE
INPUT_SERVER  // 对应 $_SERVER
INPUT_ENV     // 对应 $_ENV

配合 内置提供的各种验证标记符 ,就可以解决类似的用户输入过滤等「体力活」。

最后,还是需要再提下 Filter 的个不大不小的陷阱

filter_var('abc', FILTER_VALIDATE_BOOLEAN); // bool(false)
filter_var('0',   FILTER_VALIDATE_BOOLEAN); // bool(false)

总体而言,这并不影响我们去尝试它 :^)

-- EOF --