yii2->验证码问题(Yii2.0 ajax验证,验证码报错,load方法)
2017-04-27 11:38
579 查看
作为一个yii2新手来说,对于验证码真是又爱又恨,框架自带的验证码解决了自写验证码的烦恼,然而还是有些小问题。
需求:登陆输入:用户名、密码、验证码
弹框登录+ajax验证
1、LoginForm.php(跟大多数人加验证码的方式一致)
2、页面(ActiveForm enableAjaxValidation和id是异步提交必不可少的,validationUrl异步验证的方法)
因为是弹框登录,From中的验证和提交url,是分开写的。
3、控制器
之前存在的问题:
1、弹框登录,ajax异步提交。
解决方法:ActiveForm里面添加
'enableAjaxValidation' => true,
'validationUrl' => Url::toRoute(['validate-form']),
2、可以在弹出的登陆框里面验证数据,But验证码输入正确,依然会提示错误。
错误原因:ActiveForm::validate的验证我指定了验证字段,因为如果验证所有的,那验证码将会出问题,因为每次验证后都会生成新的验证码。
解决方法:思路就是这里的数据校验只验证 密码 名字。验证码的校验交给yii来做。 (ps:照搬别人的^~^),
so:解决
需求:登陆输入:用户名、密码、验证码
弹框登录+ajax验证
1、LoginForm.php(跟大多数人加验证码的方式一致)
public function rules() { return [ [['userID', 'password'], 'required'], ['password', 'validatePassword'], ['code','captcha','captchaAction'=>'site/captcha'] ]; }
2、页面(ActiveForm enableAjaxValidation和id是异步提交必不可少的,validationUrl异步验证的方法)
因为是弹框登录,From中的验证和提交url,是分开写的。
<?php $form = ActiveForm::begin([ 'id' => 'login-form', 'enableAjaxValidation' => true, 'enableClientValidation' => true, //开启客户端验证,生成js 'validationUrl' => Url::toRoute(['validate-form']), ]); ?>
3、控制器
// 看主要的验证操作,该操作是表单字段失去焦点时异步验证,同时如果直接提交表单,也会先执行该操作进行验证 public function actionValidateForm() { if(Yii::$app->request->isAjax&&isset($_POST['ajax'])){ $model = new LoginForm(); //这里要替换成自己的模型类 $model->load(Yii::$app->request->post()); Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; $errors=\yii\bootstrap\ActiveForm::validate($model,array('userID','password')); if(sizeof($errors)>0){ return $errors; } return true; }
之前存在的问题:
1、弹框登录,ajax异步提交。
解决方法:ActiveForm里面添加
'enableAjaxValidation' => true,
'validationUrl' => Url::toRoute(['validate-form']),
2、可以在弹出的登陆框里面验证数据,But验证码输入正确,依然会提示错误。
错误原因:ActiveForm::validate的验证我指定了验证字段,因为如果验证所有的,那验证码将会出问题,因为每次验证后都会生成新的验证码。
解决方法:思路就是这里的数据校验只验证 密码 名字。验证码的校验交给yii来做。 (ps:照搬别人的^~^),
so:解决
相关文章推荐
- Yii2.0 ajax验证,验证码报错,load方法
- yii2.0 ajax登陆验证失败验证码不自动刷新
- SSH之ajax验证用户名是否存在和验证码问题
- yii widget验证码不实用form验证的方法
- 登录时第一次输入验证码显示验证码错误。出现的问题:验证码ajax验证时 后台取不到session的值
- 短信防刷(开发时遇到的大问题,一天几万的钱都被刷了,至今未找到十全十美的方法,只是加入了极验图形验证,但是2.0极验基本已被破解,不知道3.0的效果怎么样)
- 基于Ajax用户名验证、服务条款加载、验证码生成的实现方法
- Yii使用ajax验证显示错误messagebox的解决方法
- yii2.0给表单添加验证码的实现方法
- 在HTML中动态加载Javascript文件<AJAX的方法>--好像还有点问题
- yii 使用cactiveform 创建表单时候遇到的一些验证问题和使用ajax_form时重置验证规则的解决办法
- yii2验证密码->手机号码短信发送>手机短信发送频繁问题
- 跳过Yii的load表单验证及load失败问题
- yii2.0给表单添加验证码的实现方法
- Yii的CDbCriteria查询(以及使用$criteria->join出现问题的解决方法)
- Yii使用ajax验证显示错误messagebox的解决方法
- jsp中验证码的实现,以及ajax实现的正确的验证,解决了session不同步的问题。(我这里已测试过,可以直接用)
- Yii输入正确验证码却验证失败的解决方法
- 让jQuery的load方法可以接受ajax选项(解决缓存等问题)
- Ms Ajax Lib-> $get 方法