Yii框架验证码不显示、不刷新、验证不正确的一些解决办法
来源:互联网 发布:ubuntu设置无线网络 编辑:程序博客网 时间:2024/05/21 17:42
最近刚刚开始学习yii框架使用,真心的这个框架提供了很多简便的方法,但是自身bug和不足的地方太多了,首先验证码就存在很多的问题,用了好几天时间阅读源代码加上网上搜寻,终于是解决的验证码的问题,
1,验证码不显示:
首先保证你的controler 里面的captcha方法是可访问的,被分配的权限的,这个在rule里面设置。
第二,保证你的PHP GD插件已经被启用,
第三如果这样还是不显示,那么试试看这个方法吧,别人告诉我的。
解决方法:先找到yii\framework\web\widgets\captcha\CCaptchaAction.php,可以尝试通过以下几种方法来解决 :
1 尽量删除文中的空格
2 在php文件顶部加入error_reporting(0);
3 在header输出前加入ob_clean(); 也就是:
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Content-Transfer-Encoding: binary');
header("Content-type: image/png");
imagepng($image);
imagedestroy($image);
好了这样正常就能显示了;
2,验证码不刷新。
刷新页面不刷新:这个的解决方法就挺多了,可以在controler的action方法在配置captcha组件的时候'fixedVerifyCode'=“生成自定义的验证码”(可以用time函数);
还可以在CCaptchaAction 中在他的run方法中在else
$this->renderImage($this->getVerifyCode(true)); 这样每次使用都会得到新的验证码。
点击get a new code 不刷新,这个问题困扰我很久了,后面经过不断的阅读源代码,以及分析页面的get a new code 的连接终于解决的。
首先点击没有反应是因为没有加事件。所以手动加上一个jQuery事件,然后点击之后,利用ajax方法发出请求(url就是get a new code 的链接dataType要是HTML,不然会执行error方法),得到响应内容是:
header:text/html*****(省略) 然后{"hash1":356,"hash2":356,"url":"\/yiit\/index.php?r=newusers\/captcha&v=548a5dcb74cc1"}
好了对这段字符串进行解析,拿到URL里面的值赋给验证码图片的src就可以点击get a new code 刷新了!(这个花了我一个早晨时间,我靠)我是这样解析的:
var oriurl = strtext.split(':'); //strtext就是上面的字符串
var url = oriurl[oriurl.length-1].split('"');
var src = url[url.length-2];
src = src.replace(/\\/g, ""); //这里把里面的转义符去掉!不然不行
$('#yw0').attr('src',src);
万事ok?? no,no, still get a long way to go !因为这样的话刷新之后验证的时候会出问题!
3,验证不正确,不正常
这个在CCaptchaAction组件里面本身就有自带验证码方法,仔细一看,这段代码并没有出什么bug啊,那到底是为什么呢?
经过查看Yii的api终于让我找到了问题!因为还有一个类是在前台生产js代码,然后对验证码进行验证的。但是手动刷新之后,这个类并没有得到新的验证码,得到的还是原来的验证码,所以验证码的时候还是出了问题。解决方法,禁用前台js验证码或者干脆让那个类前台验证码返回true,这样使用CCaptchaAction自带的后台验证就没有问题了。
但是我忘了那个类叫什么了,因为现在找不到api放哪个文件夹了,,总之你们看一下api就会懂的!
从此验证码再没有问题,有问题看源码也能解决。
- Yii框架验证码不显示、不刷新、验证不正确的一些解决办法
- yii验证码不显示
- Yii 1.0验证码不显示的问题
- YII framework CCaptchaAction 解决YII验证码不更新的刷新问题
- DEDECMS验证码不正确及其不显示问题
- 登陆验证码图片不显示解决办法
- 登陆验证码图片不显示解决办法
- Thinkphp 验证码不显示解决办法
- yii自带验证码,解决刷新页面验证码不刷新问题
- jsp 不显示验证码图片问题的解决办法之一
- sp2验证码图片不显示的解决办法!
- utf8编码的asp文件验证码不显示-解决办法
- yii2 验证码不刷新的解决
- yii验证码Captcha使用以及为什么验证码不刷新问题
- thinkphp写的验证码不显示
- thinkcmf生成的验证码不显示
- echop 验证码不正确的解决办法
- Thinkphp中验证码不显示(裂开)解决办法
- 【软件工程】之第八章总结
- CentOS 无线网卡安装
- ConfigParser — Configuration file parser
- 成员函数做为线程函数
- dispatch_after使用方法详解
- Yii框架验证码不显示、不刷新、验证不正确的一些解决办法
- java实现软件程序开机自动启动和创建程序的桌面快捷方式源代码
- 动态规划之背包问题(一)
- 1412251902-蓝桥杯-基础练习 字母图形
- hive调优系列之一总体篇
- 实验一:VC编程环境灵活运用
- JAVA volatile 的原理与技巧
- 矩阵快速幂
- 138 金安國 慕齋