控制器方法
public function verify() {
import('ORG.Util.Image');
ob_clean(); // 清除先前輸出,避免圖片損壞
Image::buildImageVerify();
}
視圖引用
<img src="__APP__/Index/verify/"
onclick="this.src=this.src+'?'+Math.random()"
alt="點擊刷新"
style="cursor: pointer; vertical-align: middle;">
<input type="text" name="verify" placeholder="輸入驗證碼">
常見問題排查
| 現象 | 原因 | 解決 |
| 圖片顯示亂碼/破圖 | 未呼叫 ob_clean(),有輸出干擾圖片二進位流 | 在 Image::buildImageVerify() 前加入 ob_clean() |
| 驗證永不通過 | Session 未啟動或驗證碼儲存鍵名不一致 | 確認 session_start()、檢查 Image::verify() 參數 |
| 字體找不到 | 字體檔路徑錯誤 | 確認 ThinkPHP/Extend/Library/ORG/Util/ 下字體檔存在 |
驗證邏輯(表單處理)
if (!Image::verify($_POST['verify'])) {
$this->error('驗證碼錯誤');
}
// 通過繼續業務邏輯
進階:自訂驗證碼參數
Image::buildImageVerify(4, 'png', 120, 40, 5);
// 參數:長度、類型、寬、高、干擾線條數