香港独立IP空间
香港php空间
美国php空间
域名注册

一个好的php开源程序,应该经得起成千上万的使用测试。今天无忧主机小编在处理客户问题的时候,遇到了一个关于thinkphp中文验证码的问题。
我们都知道,php开源程序所设置的验证码功能,目的是为了保护网站的一些信息。比如说,登陆管理后台需要输入验证码,可以多一道安全屏障。而相对于英文验证码,中文验证码的安全系数又更上一层楼。但是今天客户遇到的问题是,英文验证码显示并没有问题,但是设置中文验证码时缺无法显示。客户使用的thinkphp版本是2.0,因为程序一直可以使用,也就没有更换程序重新建站。
无忧主机小编检查了一下thinkphp字体文件等,并没有发现问题。这时无忧主机小编想到,之前有处理过一个客户的问题,其验证码不显示的原因是文件上传时少上传了一个类:string。这个类中的某个函数,是被中文验证码功能所调用的。而无忧主机小编询问了下度娘,了解到中文验证码调用方法是在thinkphp\Lib\ORG\Util\Image.class.php 文件中的GBVerify方法。
小编对代码不是很明白,但是如果是调用某个类中的功能,一定要出现那个类的名称。于是小编开始了漫漫实验路。经过多次的实验,在Image.class.php的GBVerify(thinkphp中文验证码)方法中,第322行有这样一段代码:
$codex= msubstr($code,$i,1);
而在之前小编了解到msubstr这个函数是调用string类中的。都没有出现string,如何能调用到这个类?当然是不可能的。
在请教了无忧主机的程序员之后,小编把以上那段代码做了以下修改:
$codex= String::msubstr($code,$i,1);
这样修改的目的是让msubstr这个函数调用到string类。
果然这样做了修改之后,中文验证码成功的显示出来了。
无忧主机小编认为,这样的问题应该是程序开发人员考虑不周,虽然版本比较老,新版本的thinkphp可能并没有这个问题,但是程序开发过程中,小编认为中文验证码的问题还是应该可以考虑到的。当然,如果您的thinkphp遇到这样的问题,可以尝试用小编的这个方法进行解决。

本文地址:http://www.51php.com/thinkphp/12904.html

喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

阅读本文的人还阅读:


搜索技术文档