如果下面的代码行更好地用于确保我的代码更安全,那该怎么办?我应该使用filter_var函数的settype函数吗?settype()vs filter_var()
settype($number,'integer')
或
filter_var($number, FILTER_SANITIZE_NUMBER_INT);
感谢你
如果下面的代码行更好地用于确保我的代码更安全,那该怎么办?我应该使用filter_var函数的settype函数吗?settype()vs filter_var()
settype($number,'integer')
或
filter_var($number, FILTER_SANITIZE_NUMBER_INT);
感谢你
由于documentation说,大约FILTER_SANITIZE_NUMBER_INT
:除了数字
删除所有的字符,加号和减号。
因此,如果您希望在SQL查询中使用一个ID,我将使用正则表达式来检查我只有数字/^[0-9]+$/
。因为FILTER_SANITIZE_NUMBER_INT
将允许-12
这在这种情况下是没有意义的。
filter_var和settype之间的主要区别是,将一个字符串解析变量,并返回一个字符串,另一个将它转换为一个整数。
$string = "+12";
var_dump(filter_var($string, FILTER_SANITIZE_NUMBER_INT));
settype($string, "integer");
var_dump($string);
输出:
string(3) "+12"
int(12)
所以这真的取决于上下文。
或者只是用'(int)'将其转换为int。所有三个选项都会得到同样的结果。 –
这真的取决于你想用'$ number'做什么。 – Jocelyn