关于Thinkphp的自动验证create()函数的问题
来源:互联网 发布:supreme淘宝正品店铺 编辑:程序博客网 时间:2024/04/29 16:49
我们使用手册的时候会看到手册上显示的是以下的代码
protected $_validate= array(
array('verify','require','验证码必须!'),//默认情况下用正则进行验证
array('name','','帐号名称已经存在!',0,'unique',1),// 在新增的时候验证name字段是否唯一
array('value',array(1,2,3),'值的范围不正确!',2,'in'),// 当值不为空的时候判断是否在一个范围内
array('repassword','password','确认密码不正确',0,'confirm'),// 验证确认密码是否和密码一致
array('password','checkPwd','密码格式不正确',0,'function'),// 自定义函数验证密码格式
);
$User = D("User"); // 实例化User对象
if (!$User->create()){
// 如果创建失败 表示验证没有通过 输出错误提示信息
exit($User->getError());
}else{
// 验证通过 可以进行其他数据操作
}
但是当我们自己写的时候会发现验证时会出现问题,如果我们这样写 if(!$User->create()),再验证的时候就会出现逻辑错误,拿密码和确认密码的例子说一下,如果我们在两个输入框中(输入密码 ,重复输入密码)输入的不一致时,我们得到的是模型里的提示信息即上边的确认密码不正确,但是我们输入的密码和确认密码一致时,虽然不提示密码不一致但是也不会提示密码一致,继续进行的提示等,很懵逼哈,这是为什么呢,我们用谷歌调试的时候不会发现任何问题,代码是正确的,问题出在哪呢,我找了一下,原来是因为create()函数返回的值不仅有true 或者 false两种还会返回空数组等,这就导致了我们的逻辑错误,虽然我们没有输入并不一致,但是用 if(!$User->create()) 这种验证的时候$User->create()返回的是一个空 ‘!’非一下就会认为值为true 或者 1 ,就会继续走exit($User->getError());这条语句,
所以就不会得到我们想要的结果。改正的方法就是将 if(!$User->create())改为false===$User->create()就正确了,这样会限制一下返回值的类型,自然就会验证正确了
0 0
- 关于Thinkphp的自动验证create()函数的问题
- thinkphp模型的自动验证
- ThinkPHP的自动验证摘记
- thinkPHP的自动验证与自动填充
- 关于thinkphp验证码不显示的问题
- ThinkPHP的验证码问题
- thinkphp的create方法
- 简单的thinkphp自动验证使用
- Thinkphp 登录以及注册的自动验证
- thinkphp dwz 的数据自动验证
- ThinkPHP的自动验证功能 $_validate
- thinkphp自动验证BUG问题
- 关于thinkphp验证码的显示
- ThinkPHP中的create方法与自动令牌验证
- ThinkPHP 自动验证与自动填充无效可能的原因
- ThinkPHP 自动验证与自动填充无效可能的原因
- ThinkPHP 自动验证与自动填充无效可能的原因
- thinkPHP验证码失效的问题
- switch语句
- Spring RequestMapping优化
- CABAC基本原理介绍
- MAC jdk安装
- 慢慢长大了
- 关于Thinkphp的自动验证create()函数的问题
- CICS集群新增一个PD作为入口程序
- scala可变长度参数概念
- 密集负载下的网卡中断负载均衡smp affinity及单队列RPS
- NI-VISA在C#中总是报错完成操作前已过期。VISA-1073807339(0xBFFF0015)ErrorTimeout
- FFMPEG中最关键的结构
- java nio原理和通信模型
- php 项目性能优化
- Java设计模式之抽象工厂模式