搜索
系统检测到您的用户名不符合规范:

thinkphp3.2.2bug与建议

浏览:749 发布日期:2014年08月22日 分类:站务建议 关键字: thinkphp bug 建议
thinkphp 3.2.2 bug:关闭调试,对于字符串查询例如 $map['name'] = 'thinkphp' 结果为null,但是数字查询正常。,开启调试查询结果正常。
thinkphp 3.2.2 建议:给自动验证增加查询验证;很多时候都需要根据查询数据库判断某个值的状态或者值是否正确,在项目中很多地方都要用到。
例如:查询某个账户是否已被禁用,安全邮箱正确与否,等等。自动验证规则如下:
array('active','username','该账户已经禁用!',1,'inquiry',3),
array('email','username','安全邮箱不正确!',1,'inquiry',3),
其中,active和email是需要验证的字段,username是需要查询的验证条件。下面的是提交的表单:
array(4) {
["username"] => string(5) "admin"
["email"] => string(15) "admin@admin.com"
["password"] => string(5) "admin"
["repassword"] => string(5) "admin"
}
通过表单获取查询条件$map['username']='admin';用getField取得需要验证字段的值,即active和email的值;在提交的表单中, 没有active的值,但是有email的值,因此可以区别对待:对active,根据数据库中已经查到的值确定真假并返回;对email,判断表单中提交的
值与数据库中查询到的值判断是否相等并返回;
代码修改位置:ThinkPhp\Library\ThinkModel.class.php 1144行添加如下代码即可;
case 'inquiry': //验证某个值的状态或者值是否正确
$map[$val[1]] = $data[$val[1]];
$res=$this->where($map)->getField($val[0]);
if($data[$val[0]]){
if($res==$data[$val[0]]) return true;return false;
}else{
if($res) return true;return false;
}
最佳答案
评论() 相关
收藏
天之涯
积分:145 等级:LV1
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /