php – 引用mysql查询中的int值

前端之家收集整理的这篇文章主要介绍了php – 引用mysql查询中的int值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经养成了通过我的int函数过滤用户提交的变量的习惯,这确保它是一个数字(如果不是返回0)而不是在 mysql查询中引用变量.

这是不好的做法吗?我想我出于性能原因决定这样做.另外,我一直认为数字不应该放在引号中.

例:

if($perpage != $user['perpage']){
if($perpage == 50 || $perpage == 100 || $perpage == 200 ){
$DB->query("UPDATE users SET perpage=$perpage WHERE id=$user[id]",__FILE__,__LINE__);
}
}
啊哈!这是一个有趣的案例!

>你一般都是对的.将数字视为数字而不是字符串总是更好

>它使您的代码更加理智和一致
> MysqL中的strict_mode设置,如果打开,它将不允许您将数字伪装为字符串.

>但实际上你的实施允许注射!让我们留下你的作业找到它:)

以下是您的参考,解释此注射:http://php.net/language.types.type-juggling

所以,我会让你的代码像这样

$perpage = intval($perpage);
if($perpage != $user['perpage'] && in_array($perpage,array(50,100,200) { 
  $DB->query("UPDATE users SET perpage=$perpage WHERE id=$user[id]"); 
}
原文链接:https://www.f2er.com/php/134247.html

猜你在找的PHP相关文章