gpt4 book ai didi

php - is_numeric() 是否消除了对数字数据的 mysql_real_escape_string() 的需要? PHP

转载 作者:行者123 更新时间:2023-11-29 06:57:30 24 4
gpt4 key购买 nike

我有一个将 MySQL 表 ID 作为输入的函数。

除了应用 mysql_real_escape_string,我可以只使用 is_numeric 吗?

像这样:

protected function validId($id) {
if(!is_numeric($id)) return false;
// else do stuff
}

编辑:

我还想提一下,我有时用过这个:

$val = (int)$val;

这里是 PHP 文档中关于类型转换的部分:http://php.net/manual/en/language.types.type-juggling.php#language.types.typecasting

此外,我相信每次使用 mysql_real_escape_string 都需要访问数据库。为什么在验证整数时要这样做?

编辑2:

此外,is_int() 不适用于表单输入,这就是我使用 is_numeric 的原因。但也许做这样的事情会解决问题并更快地工作/减少服务器负载:

protected function validId($id) {
if(!is_numeric($id)) return false; // confirm it is number or numeric string
$id = (int) $id; // cast to int (will chop off decimals I believe)
// do stuff
}

最佳答案

视情况而定。

is_numeric 允许十六进制表示法。如果您在查询中将其用引号引起来,则结果只会是 0,但如果您不这样做,则会被正确解释。 is_numeric 也允许使用科学记数法,但存在同样的问题。

就我个人而言,我建议使用 intval(),但 mysql_real_escape_string 更安全。

如果它是函数名的长度,就这样做而不管它:

function esc($str) {return mysql_real_escape_string($str);}

关于php - is_numeric() 是否消除了对数字数据的 mysql_real_escape_string() 的需要? PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11875086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com