我刚刚在代码库中遇到了这个代码段:
$token = filter_input(INPUT_GET, 'token', FILTER_VALIDATE_STRING);
if ($token === false || $token === null) {
die('invalid token');
}
FILTER_VALIDATE_STRING
不是有效的过滤器类型。这是否意味着它会恢复为FILTER_DEFAULT
,因为传入了无法识别的过滤器?
答案 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
。