thinkphp驗證碼無法顯示的詭異解決

2021-09-01 16:29:08 字數 1540 閱讀 8991

今天專案中的thinkphp驗證碼無法顯示,遂上論壇搜尋,問題最多的還是在bom,有人說關閉debug後就能顯示驗證碼,試了試,果然,關閉debug就正常了,但是一開啟debug就還是無法顯示了.怎麼回事呢?

驗證碼要使用驗證碼,需要匯入擴充套件類庫中的org.util.image類庫和org.util.string類庫。我們通過在在模組類中增加乙個verify方法來用於顯示驗證碼:

public function verify()

image類的buildimageverify方法用於生成驗證碼,該方法有以下引數可選:

buildimageverify($length,$mode,$type,$width,$height,$verifyname)

length:驗證碼的長度,預設為4位數

mode:驗證字串的型別,預設為數字,其他支援型別有0 字母 1 數字 2 大寫字母 3 小寫字母 4中文 5混合(去掉了容易混淆的字元ooll和數字01)

width:驗證碼的寬度,缺省會自動根據驗證碼長度自動計算

height:驗證碼的高度,預設為22

verifyname:驗證碼的session記錄名稱,預設為verify

定義完成後,驗證碼的顯示只需要在模板檔案中新增:

每次生成驗證碼的時候,就會通過session記錄本次的驗證碼的md5後的字串資訊,所以,要檢查驗證碼是否正確,我們只需要在action中使用下面的**就行了:

if($_session['verify'] != md5($_post['verify']))

注意,這裡的verify名稱取決於你的驗證碼的verifyname引數的值。

buildimageverify方法不支援中文驗證碼的顯示,如果需要顯示中文驗證碼,請使用

gbverify方法,引數如下:

gbverify ($length,$type,$width,$height,$fontface,$verifyname)

length:驗證碼的長度,預設為4位數

width:驗證碼的寬度,缺省會自動根據驗證碼長度自動計算

height:驗證碼的高度,預設為50

fontface:使用的字型檔案,使用完整檔名或者放到影象類所在的目錄下面,預設使用的字型檔案是simhei.ttf(該檔案可以從window的fonts目錄下面找到)

verifyname:驗證碼的session記錄名稱,預設為verify

例如public function verify()

顯示效果如下:

如果無法顯示驗證碼,請檢查:

² php是否已經安裝gd庫支援;

² 輸出之前是否有任何的輸出(尤其是utf8的bom頭資訊輸出);

² image類庫是否正確匯入;

如果是中文驗證碼檢查是否有拷貝字型檔案到類庫所在目錄;

這是官方說明,繼續跟進這個問題,看看到底是怎麼回事.

2023年5月14日11:41:13,經過最新檢測,還是bom的問題,汗,配置檔案有了bom,導致這個問題.如何檢測bom並批量去除bom,請參考這篇部落格:

友情提示,不要用windows記事本軟體開啟utf8編碼的程式檔案.

驗證碼無法顯示

這段時間在寫乙個驗證碼,在我的機器上好好的,但是到了公司的電腦上就顯示 影象因其本身有錯無法顯示,這是什麼原因呢?試了好長時間還是沒辦法解決,於是就去google。網上通用的解決方法是 1 盡可能去掉中文空格 2 將 但是還是解決不了我的問題。如果你試了上面的方法還是解決不了你可以用下面的方法 在 ...

Wamp下網頁無法顯示驗證碼

網上見很多朋友因為php裡gd庫的問題煩惱不已。鑑於gd庫的強大功能,如果你用不了gd庫將是你程式設計路上的乙個小小的阻礙。說一說在wamp環境下安裝gd庫的操作說明 第一步 配置好php開發環境後,在php.ini中找到php gd2.dll,把前面的分號去掉。這樣有的情況就可以解決了!如果實在不...

ThinkPHP驗證碼不能顯示如何解決

thinkphp自帶驗證碼的函式類,存放路徑為 thinkphp lib org util 驗證碼類 使用的時候只需在index控制器中引入,方法如下 public function verify 在模板頁面中呼叫方法如下 if session verify md5 post verify thin...