filter_input包含无效的过滤器

时间:2016-06-20 21:02:47

标签: php

我刚刚在代码库中遇到了这个代码段:

$token = filter_input(INPUT_GET, 'token', FILTER_VALIDATE_STRING);
if ($token === false || $token === null) {
    die('invalid token');
}

FILTER_VALIDATE_STRING不是有效的过滤器类型。这是否意味着它会恢复为FILTER_DEFAULT,因为传入了无法识别的过滤器?

2 个答案:

答案 0 :(得分:1)

您将收到一条警告,指出正在使用未定义的常量,并且PHP将继续并将其转换为字符串文字。最好的办法是使用documentation中定义的常量。

答案 1 :(得分:1)

所有GET和POST变量都是字符串,正如您所指出的那样FILTER_VALIDATE_STRING不是定义的常量。如果启用错误报告,您将看到:

  

注意:使用未定义的常量FILTER_VALIDATE_STRING - 假设' FILTER_VALIDATE_STRING'

     

警告:filter_input()期望参数3为long,给定字符串

所以filter_input()将返回NULL,就像任何其他未传递必需参数的函数一样。

这是假设写这篇文章的人也没有定义FILTER_VALIDATE_STRING