Yii1.0 不同页面多个验证码的使用实现
当业务A页面有验证码,且业务B页面也需要验证码。这个时候,如果A和B共用一个验证码,则会出现这种情况:
A页面出现验证码,这个时候打开B页面验证码,再回到A页面输入验证码,即使验证码输入无误,也会验证不通过。因为A和B共用一个验证码,也就是验证码存储的session是一个,这样对用户体验很不好。
解决方法如下:
HTML代码
业务A的验证码页面 $.ajax({ url:'/Captcha/A/refresh',//不同业务模块调用不同的urlB业务调用/Captcha/B/refresh type:'get', dataType:'json', async:true, success:function(data){ if(data.src){ $('#imgValCode').attr('src',data.src); } } }); 
PHP代码
[
'class'=>'application.components.MyCaptcha.MyCaptchaAction',
'backColor'=>0xFFFFFF,
'minLength'=>5,
'maxLength'=>5,
'offset'=>5,
'testLimit'=>1,
'width'=>100,
'height'=>40,
'isInterferingLine'=>true,//是否启用干扰线
'interferingLineNumber'=>8,//干扰线数量设置
'foreColor'=>'0x0c0c0e'
],
//B业务验证码
'B'=>[
'class'=>'application.components.MyCaptcha.MyCaptchaAction',
'backColor'=>0xFFFFFF,
'minLength'=>5,
'maxLength'=>5,
'offset'=>5,
'testLimit'=>1,
'width'=>100,
'height'=>40,
'isInterferingLine'=>false,//是否启用干扰线
'interferingLineNumber'=>8,//干扰线数量设置
'foreColor'=>'0x0c0c0e'
]
];
}
/**
*验证码验证函数
*在需要验证验证码的控制器中调用,传递businessId(业务类型id)作为区分不同验证码的id
*调用方式:
*Yii::app()->runController('Captcha/actionVerifyCode',['businessId'=>'A']);
*/
publicfunctionactionVerifyCode($businessId)
{
$code=Yii::app()->request->getPost('code');//接收用户输入的验证码
if($businessId=='A'){
$vcode=$this->createAction('A')->getVerifyCode();//获取A业务的验证码
}elseif($businessId=='B'){
$vcode=$this->createAction('B')->getVerifyCode();//获取B业务的验证码
}
if(empty($vcode)||empty($code)||$vcode!=$code){//验证用户输入验证码与验证码是否相等
returnfalse;//验证不通过
}
returntrue;//验证通过
}
}
?>
到此这篇关于Yii1.0不同页面多个验证码的使用实现的文章就介绍到这了,更多相关Yii1.0多验证码内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
