最近刚刚开始学习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(); 也就是:

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框架验证码不显示、不刷新、验证不正确的一些解决办法相关推荐

  1. 下载logisim时显示“系统找不到指定路径”的解决办法!!!!

    下载logisim时显示"系统找不到指定路径"的解决办法!!!! 最后全部搞完的时候百度到了这个: 因为我的电脑之前胡乱删了一些东西而且Java没卸载,总之就很乱,但是我没卸载干净 ...

  2. java微信公众号开发token验证失败的问题及解决办法

    java微信公众号开发token验证失败的问题及解决办法 参考文章: (1)java微信公众号开发token验证失败的问题及解决办法 (2)https://www.cnblogs.com/beardu ...

  3. 苹果设置显示连接到服务器,iPhone升级更新至iOS9后显示连接到iCloud服务器错误现象的解决办法...

    IOS9正式版系统已经推出了,很多用户也更新升级使用了,有部分伙伴发现将iPhone手机升级至IOS9后连接iCloud时出现错误的情况,那么,IOS9连接iCloud出错怎么办呢?针对此问题,本文就 ...

  4. 笔记本电脑不显示WIFI列表无法连接到网络的解决办法

    笔记本电脑不显示WIFI列表无法连接到网络的解决办法 笔记本电脑WiFi列表不显示,如下图: 以下以Win10系统来操作演示解决办法: (一)检查网卡驱动是否正常 笔记本电脑突然不显示WiFi列表,多 ...

  5. SyntaxHighlighter行号显示错误及代码太长无法换行解决办法

    2019独角兽企业重金招聘Python工程师标准>>> SyntaxHighlighter是一个使用JavaScript编写的功能齐全的代码语法高亮的软件.如果一行代码或注释太长的话 ...

  6. 服务商模式下微信小程序支付时,一直报“支付验证签名失败”错误的解决办法

    在写小程序支付的时候,我是以服务商模式发起的支付,统一下单接口是调用成功的,但是在小程序调起支付的时候就报"支付验证签名失败"的错误. 主要有三个原因: 1.第二次签名用到的tim ...

  7. ## 解决iPhone“抹掉所有内容和设置”时,弹出“验证失败”的问题?解决办法如下:

    解决iPhone"抹掉所有内容和设置"时,弹出"验证失败"的问题?解决办法如下: 1.设置->无线局域网->设置-> WLAN与蜂窝移动网 2 ...

  8. VBA IDE显示没有打开的工程,无法操作解决办法

    阅文时长 | 0.24分钟 字数统计 | 388字符 主要内容 | 1.引言&背景 2.解决方案 3.拓展:正确导入dotm文件 4.声明与参考资料 『VBA IDE显示没有打开的工程,无法操 ...

  9. 数据库附加出错显示服务器,SQL Server数据库附加失败的解决办法

    SQL Server数据库附加失败的解决办法 本文为大家分享了SQL Server数据库附加失败的具体解决方法,供大家参考,具体内容如下 1.错误3415 问题:附加数据库的时候,发现总是附加失败,查 ...

  10. html文件修改后缀为aspx之后在ie6中格式显示不正确问题的解决办法

          因为客户的特殊要求,网站显示的时候必须以aspx后缀的形式来显示,所以把所有文件的后缀全部改成aspx了.但是部署上去之后,aspx文件在ie7及ie8中都能正常显示(ie8中能正常显示需 ...

最新文章

  1. 计算机控制面板没有笔和触摸,如何通过注册表或者 命令 或者服务 关闭 控制面板笔和触摸里面的笔势操作(控制面板-笔和触摸-笔势) !急!...
  2. nginx配置文件说明
  3. jQuery基础 (一)—样式篇
  4. 《深入解析Windows操作系统》--第一章 概念和工具
  5. Linux入门笔记——cat、sort、uniq、wc、head、tail、tee
  6. 使用jQuery异步传递含复杂属性及集合属性的Model到控制器方法
  7. Effective Java~2.Builder代替多参数Constructor
  8. 启动级别:init 0,1,2,3,4,5,6
  9. C语言 - 数组作为参数传递给函数(按值传递和按引用传递)
  10. cfe刷机教程 斐讯k3_斐讯K3刷机教程官改V2.1D或者其它版本教程
  11. python内置函数( )可以返回列表长度_python内置函数总结
  12. 3DMAX卸载/完美解决安装失败/如何彻底卸载清除干净3DMAX各种残留注册表和文件的方法...
  13. Android11.0 默认开启WLAN热点设置默认热点名称和密码
  14. linux 电驴,开源电驴 MLDonkey 3.0.7 发布
  15. “为了交项目干杯”对“那周余嘉熊掌将得队”、“男上加男,强人所男”的Beta产品测试报告...
  16. java里面不等于怎么打_不等于在c语言中怎么打
  17. RabbitMQ五种工作模式
  18. 一加6可以刷的rom_一加6MIUI刷机包(系统刷机完整固件升级包MIUI10)
  19. C++ std:string 转 LPWSTR
  20. MP3制作之LRC歌词文件解析(附:源代码)

热门文章

  1. JN5169 NXP ZigBee PRO 无线网络应用所需的常见操作(一)
  2. zigbee学习之JN5169通用函数
  3. Windows事件ID大全
  4. python给批量图片添加文字 脚本_Python实现图片添加文字
  5. 图森冲刺全球无人驾驶第一股!创办5年融资40亿,新浪是大股东
  6. linux 防火墙 卸载不了怎么办,CentOS 7卸载firewalld防火墙安装iptables
  7. html新建文件夹,javascript实现新建文件夹的功能
  8. 【树形dp 题解】 洛谷P3174 毛毛虫
  9. 甲骨文裁员事件的思考
  10. 上传图片时出现http 415错误