thinkphp5.1系统验证器做验证时unique无效的解决

问题

用thinkphp5.1设计一系统,会员注册时候使用验证器验证表单数据,对用户名使用unique验证规则,但是实际执行不起作用,发现了用户名竟然重名!!!

解决过程

1.查看验证代码,初始用户名中没有发现unique规则
2.查看验证场景代码,发现验证代码是:

...
->append('username','unique:user')
->append(
### ThinkPHP 5.1 表单验证方法 在ThinkPHP 5.1框架中,表单验证通过内置的验证器类实现。这使得开发者可以轻松地创建复杂的验证逻辑来确保数据的有效性和安全性。 #### 创建验证器 为了使用自定义验证方法,在`application/validate`目录下新建一个文件用于定义特定业务场景下的验证规则。例如: ```php <?php namespace app\index\validate; use think\Validate; class User extends Validate { protected $rule = [ 'name' => 'require|max:20', 'email' => 'email|unique:user,email' ]; protected function sceneAdd() { return $this->only(['name', 'email']); } } ``` 此代码片段展示了如何设置基本字段验证规则以及针对不同操作场景应用不同的验证集[^1]。 #### 使用验证器 当处理来自用户的输入,可以通过控制中的`validate()`函数调用来执行这些预设好的验证条件。下面是一个简单的例子说明怎样在一个新增用户的过程中运用上述定义过的User验证器: ```php public function addUser(Request $request){ // 获取请求参数 $data = input('post.'); // 实例化并传入要校验的数据 $result = $this->validate($data,'app\\index\\validate\\User.add'); if(true !== $result){ // 如果返回false,则表示验证失败,并给出错误提示信息 return json(['code'=>0,'msg'=>$result]); }else{ // 验证成功后的逻辑... return json(['code'=>1,'msg'=>'success']); } } ``` 这段程序首先收集POST提交过来的信息作为待检验对象;接着利用`$this->validate()`来进行合法性判断——如果不符合设定的标准就会立即停止后续流程并向客户端反馈具体原因;反之则继续正常流转下去完成相应功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值