前言:
在项目中经常在安全,性能方面,往往会忽略一些事情,比如校验参数时,其实在传参时就可以避免这些,
假设以下一个场景:数据量庞大时,经常要根据某个字段来进行排序,根据结果来得到想要的信息,所以经
常会用到表的字段,那么在传参时,参数存在字段中,则返回结果,不存在时,直接返回NULL。
这样是不是可以减少Mysql的IO操作也可以保证一定的安全呢?
实操:
$m = M("web_app_version");
//改进前:如果使用现有的字段名称,可以做到,但是不方便以后维护,比如新增或删减字段名
//$type_rules = array('id', 'app_type', 'app_title', 'app_version',
// 'app_file_address', 'app_update_log',
// 'app_create_time', 'is_show');
//改进后:getDbFields()是thinkphp封装的
$type_rules = $m->getDbFields(); // ★★★★★代码少,逼格高,扩展性强
$rules = array(
array('type', $type_rules, '非法操作类型!', 2, 'in'),
array('order', array("desc", "asc"), '非法操作类型!', 2, 'in'),
);
if (!$m->validate($rules)->create()) {
return $this->error($m->getError());
die();
}
网友评论