如何解決thinkphp驗證碼不生效問題

thinkphp驗證碼不生效的解決辦法:1、在調用驗證碼之前加上“ob_clean();”語句;2、檢查下自己的數據庫配置文件并修改正確即可。

如何解決thinkphp驗證碼不生效問題

本文操作環(huán)境:Windows7系統(tǒng)、thinkphp v5.1版、Dell G3電腦。

如何解決thinkphp驗證碼不生效問題?

ThinkPHP5驗證碼不顯示的原因及解決方法

其實很久之前剛學習tp5框架的時候就遇到了這個問題,解決完后一直沒再出過問題,今天用以前的框架做新項目時又碰到了這個問題,這里記錄一下

立即學習PHP免費學習筆記(深入)”;

問題原因:

1、TP5本就存在這個bug

2、數據庫連接不正常(項目連接數據庫不正常時驗證碼也會不顯示)

解決方法:

1、TP5自身bug,在TP5官網論壇是給了對應方法解決的、在獲取驗證碼前清除一下緩存就行了

/* ?????*?獲取驗證碼 ?????*?*/ ????public?function?getVerify() ????{ ????????$config?=?[ ????????????'fontSize'?=>?28, ????????????'length'?=>?4, ????????????'useCurve'?=>?false, ????????]; ????????ob_clean();?????//每次獲取驗證碼前都清除下緩存 ????????$captcha?=?new?Captcha($config); ????????return?$captcha->entry(); ????}

分析:

ob_clean這個函數的作用:
用來丟棄輸出緩沖區(qū)中的內容,如果你的網站有許多生成的圖片類文件,那么想要訪問正確,就要經常清除緩沖區(qū)。

2、數據庫連接不正常導致,檢查下自己的數據庫配置文件是否有問題,tp5數據庫配置文件dababase.php

return?[ ????//?數據庫類型 ????'type'????????????=>?'mysql', ????//?服務器地址 ????'hostname'????????=>?'', ????//?數據庫名 ????'database'????????=>?'', ????//?用戶名 ????'username'????????=>?root, ????//?密碼 ????'password'????????=>?'', ????//?端口 ????'hostport'????????=>?'3306', ????//?連接dsn ????'dsn'?????????????=>?'', ????//?數據庫連接參數 ????'params'??????????=>?[], ????//?數據庫編碼默認采用utf8 ????'charset'?????????=>?'utf8', ????//?數據庫表前綴 ????'prefix'??????????=>?'ww_', ????//?數據庫調試模式 ????'debug'???????????=>?true, ????//?數據庫部署方式:0?集中式(單一服務器),1?分布式(主從服務器) ????'deploy'??????????=>?0, ????//?數據庫讀寫是否分離?主從式有效 ????'rw_separate'?????=>?false, ????//?讀寫分離后?主服務器數量 ????'master_num'??????=>?1, ????//?指定從服務器序號 ????'slave_no'????????=>?'', ????//?是否嚴格檢查字段是否存在 ????'fields_strict'???=>?true, ????//?數據集返回類型 ????'resultset_type'??=>?'array', ????//?自動寫入時間戳字段 ????'auto_timestamp'??=>?true, ????//?時間字段取出后的默認時間格式 ????'datetime_format'?=>?'Y-m-d?H:i:s', ????//?是否需要進行SQL性能分析 ????'sql_explain'?????=>?false, ];

推薦學習:《最新的10個thinkphp視頻教程

以上就是如何解決

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享