新聞中心
Thinkphp中文驗(yàn)證碼不顯示解決方法
一個(gè)好的php開源程序,應(yīng)該經(jīng)得起成千上萬的使用測試。今天無憂主機(jī)小編在處理客戶問題的時(shí)候,遇到了一個(gè)關(guān)于thinkphp中文驗(yàn)證碼的問題。 我們都知道,php開源程序所設(shè)置的驗(yàn)證碼功能,目的是為了保護(hù)網(wǎng)站的一些信息。比如說,登陸管理后臺(tái)需要輸入驗(yàn)證碼,可以多一道安全屏障。而相對(duì)于英文驗(yàn)證碼,中文驗(yàn)證碼的安全系數(shù)又更上一層樓。但是今天客戶遇到的問題是,英文驗(yàn)證碼顯示并沒有問題,但是設(shè)置中文驗(yàn)證碼時(shí)缺無法顯示??蛻羰褂玫膖hinkphp版本是2.0,因?yàn)槌绦蛞恢笨梢允褂?,也就沒有更換程序重新建站。 無憂主機(jī)小編檢查了一下thinkphp字體文件等,并沒有發(fā)現(xiàn)問題。這時(shí)無憂主機(jī)小編想到,之前有處理過一個(gè)客戶的問題,其驗(yàn)證碼不顯示的原因是文件上傳時(shí)少上傳了一個(gè)類:string。這個(gè)類中的某個(gè)函數(shù),是被中文驗(yàn)證碼功能所調(diào)用的。而無憂主機(jī)小編詢問了下度娘,了解到中文驗(yàn)證碼調(diào)用方法是在thinkphp\Lib\ORG\Util\Image.class.php 文件中的GBVerify方法。 小編對(duì)代碼不是很明白,但是如果是調(diào)用某個(gè)類中的功能,一定要出現(xiàn)那個(gè)類的名稱。于是小編開始了漫漫實(shí)驗(yàn)路。經(jīng)過多次的實(shí)驗(yàn),在Image.class.php的GBVerify(thinkphp中文驗(yàn)證碼)方法中,第322行有這樣一段代碼: $codex= msubstr($code,$i,1); 而在之前小編了解到msubstr這個(gè)函數(shù)是調(diào)用string類中的。都沒有出現(xiàn)string,如何能調(diào)用到這個(gè)類?當(dāng)然是不可能的。 在請(qǐng)教了無憂主機(jī)的程序員之后,小編把以上那段代碼做了以下修改: $codex= String::msubstr($code,$i,1); 這樣修改的目的是讓msubstr這個(gè)函數(shù)調(diào)用到string類。 果然這樣做了修改之后,中文驗(yàn)證碼成功的顯示出來了。 無憂主機(jī)小編認(rèn)為,這樣的問題應(yīng)該是程序開發(fā)人員考慮不周,雖然版本比較老,新版本的thinkphp可能并沒有這個(gè)問題,但是程序開發(fā)過程中,小編認(rèn)為中文驗(yàn)證碼的問題還是應(yīng)該可以考慮到的。當(dāng)然,如果您的thinkphp遇到這樣的問題,可以嘗試用小編的這個(gè)方法進(jìn)行解決。
本文地址:http://m.love62.cn/thinkphp/12904.html