用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的验证码中所遇问题解决的更多相关文章

  1. 在nginx下去掉ci框架url中的index.php

    ci框架默认的url规则中带有应用的入口文件,例如: example.com/index.php/news/article/my_article 在以上URL中带有入口文件index.PHP,这样的U ...

  2. CI框架简单使用

    CodeIgniter框架 1.回忆MVC 1.1.M:模型,提供数据,保存数据 1.2.V:视图,只负责显示,表单form 1.3.C:控制器,协调模型和视图 1.4.action:动作,是控制器中 ...

  3. 【CI3.1】CI框架简单使用方法

    CI框架简单使用方法 1.回忆MVC 1.1.M:模型,提供数据,保存数据 1.2.V:视图,只负责显示,表单form 1.3.C:控制器,协调模型和视图 1.4.action:动作,是控制器中的方法 ...

  4. CodeIgniter(CI)框架中的验证码

    在CodeIgniter框架中,CI本身自带了验证码,但是查看文档的时候,发现: 需要新建一个表,用来存储验证码信息.因为习惯了session存储验证码信息,所以我把我认为比较好看的验证码应用在了CI ...

  5. CI框架中,扩展验证码类。

    使用CI框架的朋友,应该都知道CI框架的的验证码辅助函数,不太好用.它需要写入到数据库中,然后再进行比对. 大家在实际项目中,好像不会这样去使用,因为会对数据库造成一定的压力. 所以,我们还是利用se ...

  6. php CI框架实现验证码功能和增强验证码安全性实战教程

    php CI框架实现验证码功能和增强验证码安全性实战教程 CodeIgniter简称CI是最流行的一个php MVC框架之一,本人讲从实际项目使用中写系列实战经验,有别与其他的理论讲解文章,会附上实战 ...

  7. CI 框架中的自定义路由规则

    在 CI 框架中,一个 URL 和它对应的控制器中的类以及类中的方法是一一对应的,如: www.test.com/user/info/zhaoyingnan 其中 user 对应的就是控制器中的 us ...

  8. CI框架中自定义view文件夹位置

    要想自定义view文件夹的位置,首先要了解CI框架时如何加载view文件夹的. CI中默认调用view的方法是: $this->load->view(); //这一行代码的原理是什么呢?请 ...

  9. CI框架在模型中切换读写库和读写库

    如果你想在控制器中切换在application/config/database.php中配置好的数据库group,那么你可以参考这篇博客:CI框架在控制器中切换读写库和读写库 如果你是希望在模型中切换 ...

随机推荐

  1. mvn 的 provided 以及 test等等 还有git团队开发技巧

    mvn 的 provided 以及 test等等 还有git团队开发技巧

  2. ]remove-duplicates-from-sorted-list-ii (删除)

    题意略: 思路都在注解里: #include<iostream> #include<cstdio> using namespace std; struct ListNode { ...

  3. 牛客小白D题(STL的迭代器)

    「只要我拉动绳线,你就得随之起舞.」          ——泰兹瑞        泰兹瑞来到卡拉德许之后,由于他精湛的神器制造技术,可谓是过的如鱼得水.这次,他为自己打造了一个编辑器,称为威穆(Vei ...

  4. centos时区设置

    [root@ logs]# tzselect Please identify a location so that time zone rules can be set correctly.Pleas ...

  5. ASP.NET quartz 定时任务

    1.下载 2.使用例子 Demo 概述:Quartz 是开源的定时任务工具类,默认每隔10秒执行一次任务,相当于C#的Timer,不断的循环执行(Start 方法),也可以随时停止(ShutDown方 ...

  6. Android学习之基础知识二(build.gradle文件详解)

    一.详解build.gradle文件 1.Android Studio是采用Gradle来创建项目的,Gradle是非常先进的构建的项目的工具,基于Groovy领域特定的语言(DSL)来声明项目配置, ...

  7. Android学习之多触点滑动

    知识点: 1.对矩阵:Matrix类熟悉,链接:https://blog.csdn.net/jdsjlzx/article/details/52741445 2.MotionEvent详解:https ...

  8. curl NSS error -8179 (SEC_ERROR_UNKNOWN_ISSUER)

    尝试分析 首先根据提示,我判断是CA证书过期.于是对证书进行了更新 update-ca-trust 但是依然没有解决问题.之后,尝试了很多方法后,重新回来想想,为什么不适用curl -v来获取更多信息 ...

  9. Maven私有仓库: 发布release版本报错:Return code is: 400, ReasonPhrase: Repository does not allow upd ating assets: maven-releases.

    今天在将一个maven组件由SNAPSHORT升级为正式版本1.0.0,然后执行发布: mvn clean deploy -pl ielong-common -am -DskipTests, 报错:R ...

  10. c# 设置桌面背景窗口 SetParent

    using System; using System.Drawing; using System.Runtime.InteropServices; using System.Windows.Forms ...