CI框架2.x的验证码中所遇问题解决
Posted 寻觅beyond
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CI框架2.x的验证码中所遇问题解决相关的知识,希望对你有一定的参考价值。
用php版本是5.6,CI框架版本是2.x,在使用验证码(captcha)时,遇到一些问题。
首先,我查看框架手册,说必需的两个参数是"img_url",“img_path”,其他的参数都可以省略,但是,我在使用的时候,如果只指定这两个参数,一运行就会报错,
错误信息显示没有word_length,word,还有0作为除数。
然后我就在验证码配置数组中加上一个\'word_length\'=>8,然后运行,但是依旧有错误,查看错误信息,依旧是word_length未定义
然后我在配置数组中加上‘’word‘’=>\'test\',然后一运行,结果顺利通过,显示一个验证码为test的图片。
但是,我不可能每次都制定验证码内容吧,然后我就查看源码,在system/helpers/captcha_helper.php中,其中的定义了一个函数,名称就是create_captcha()
可以看到,源码中,并没有word_length这一属性,以及默认值,于是我在$default中加上\'word_length\'=>8,然后运行,结果呢,还是失败,因为浏览器一直在转圈,结果一直不显示,证明进了死胡同,然后我就接着看源码,发现下面的一个函数(random_int)
这段代码是用来生成word的,如果word为空就产生word,但是你也应该看到有一行提示,php7,这就比较有趣了,我去php手册查了一下,random_int()是php7新加入的一个生成随机数的函数,手册上说php5.2-5.6也包含,但是我在另外一个脚本用function_exists("random_int"),结果这个函数没有。
应该是这个函数惹的祸吧,然后我就尝试把这个脚本中的random_int全改为mt_rand,然后一测试,完美通过,看来应该是版本问题,如果你有更好的见解,欢迎留言
以上是关于CI框架2.x的验证码中所遇问题解决的主要内容,如果未能解决你的问题,请参考以下文章
linux 安装mysql 5.7.21详解以及安装过程中所遇问题解决
Selenium TestNG Java环境搭建过程中所遇问题汇总