登陆流程(二):验证码(点击图片可换) [ 2.0 版本 ]
在UserForm中加入验证码rules
[['user', 'pwd', 'verifyCode'], 'required','message'=>'{attribute}不能为空!'],
['verifyCode', 'captcha','captchaAction'=>'/admin/site/captcha','message'=>'{attribute}有误'], //验证验证码是否正确
这里的'captchaAction'=>'/admin/site/captcha'指定验证码验证方法,你可以使用默认site/controller下的
siteController下注册captcha方法
public function actions()
{
return [
'error' => [
'class' => 'yii\web\ErrorAction',
],
'captcha' => [
'class' => 'yii\captcha\CaptchaAction',
//'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
//'backColor'=>0x000000,//背景颜色
'maxLength' => 4, //最大显示个数
'minLength' => 4,//最少显示个数
//'padding' => 5,//间距
'height'=>50,//高度
'width' => 80, //宽度
// 'foreColor'=>0xffffff, //字体颜色
//'offset'=>4, //设置字符偏移量 有效果
//'controller'=>'login', //拥有这个动作的controller
],
];
}
参数请自行选择选择
重要的view层:点击更换验证码;
<div class="form-group form-group-lg captcha field-userform-verifycode required has-error" >
<label class="control-label" for="userform-verifycode">验证</label>
<div class="row">
<div class="col-md-5 col-xs-5">
<input type="text" class="form-control" name="UserForm[verifyCode]" >
</div>
<div class="col-md-3 col-xs-4 mr20">
<img id="imgVerifyCode" onclick="changeVerifyCode()" alt="验证码">
</div>
<div class="col-md-3 col-xs-3">
<a style="cursor:pointer;vertical-align: middle;line-height: 40px;" onclick="changeVerifyCode()">换一张</a>
</div>
</div>
<p class="help-block help-block-error"><?php echo ($_POST && isset($model->errors['verifyCode'][0])) ? $model->errors['verifyCode'][0] : '';?></p>
</div>
对应js点击更换图片,对于验证码得到则采用 /admin/site/captcha?refresh 这个方法
$(function(){ //当页面加载的时候
changeVerifyCode(); //刷新或者重新加载一个验证码
//清除输入框里面的数据
$("#clear_form").click(function(){
$("input").val('');
});
});
//更改或者重新加载验证码
function changeVerifyCode() {
$.ajax({
url: "/admin/site/captcha?refresh",
dataType: 'json',
cache: false,
success: function(data) {
$("#imgVerifyCode").attr('src', data['url']);
}
});
}
在视图中我没采用yii2的form,样式是仿写过来的,也可以显示错误;
如果觉得代码不够,可以参看
https://github.com/dmodaii/yiicms2
这个master是fork的,dev分支上才有我改的
dmodai
注册时间:2016-04-16
最后登录:2016-08-19
在线时长:9小时43分
最后登录:2016-08-19
在线时长:9小时43分
- 粉丝4
- 金钱560
- 威望40
- 积分1050
热门源码
- 基于 Yii 2 + Bootstrap 3 搭建一套后台管理系统 CMF
- 整合完 yii2-rbac+yii2-admin+adminlte 等库的基础开发后台源码
- 适合初学者学习的一款通用的管理后台
- yii-goaop - 将 goaop 集成到 Yii,在 Yii 中优雅的面向切面编程
- yii-log-target - 监控系统异常且多渠道发送异常信息通知
- 店滴云1.3.0
- 面向对象的一小步:添加 ActiveRecord 的 Scope 功能
- Yii2 开源商城 FecShop
- 基于 Yii2 开发的多店铺商城系统,免费开源 + 适合二开
- leadshop - 基于 Yii2 开发的一款免费开源且支持商业使用的商城管理系统
共 4 条评论
图片的src不能直接用那个src吗?为啥还要用一个ajax请求一次?
当然你也可以一开始用的是src写死,然后点击再用ajax; 我这样一开始和以后的都是同样的一份代码(ajax)更方便不是
有点疑惑,ajax请求返回一个url,然后赋给img src,为啥不直接用这个url,给img src,ajax这一步是多余的
@jerrywang yii2的验证码你确实可以直接img src然后在验证码源码里面更改刷新页面可以更换验证码; 但是点击更换验证码实时更换你怎么做呢,你要显示验证码的url又从哪里来
默认点击验证码图片就能刷新验证码 你干嘛自己写?
使用验证码的正确姿势-登录添加验证码
你好,我想用您的这个框架做app,就是给app写接口以及写app后台,我不太了解你写的这个框架,想问下您做app这个框架合不合适?
$('#VerifyCode').on('click', function() {
this.src=this.src+"?n="+Math.random(); });