原因:網站做了多語言切換,當切換未英文語言時,圖形驗證碼不能正常顯示。
解決辦法:
這個是TP5本身存在的一個bug,官方也給出瞭解決辦法:在獲取驗證碼之前清除一下緩存(ob_clean())即可。
class CaptchaController
{
public function index($id = "")
{
//來路驗證
if (!checkCaptchaToken_only(input('token'))) {
return ;
}
ob_clean();
$captcha = new Captcha((array)Config::get('captcha'));
return $captcha->entry($id);
}
}
ob_clean()這個函數的作用就是用來丟棄輸出緩衝區中的內容,如果你的網站有許多生成的圖片類文件,那麼想要訪問正確,就要經常清除緩衝區。