thinkphp驗證碼不生效的解決方案:1、在呼叫驗證碼之前加上「ob_clean();」語句;2、檢查下自己的資料庫設定檔並修改正確即可。
本文操作環境:Windows7系統、thinkphp v5.1版、Dell G3電腦。
如何解決thinkphp驗證碼不生效問題?
ThinkPHP5驗證碼不顯示的原因及解決方法
其實很久之前剛學習tp5框架的時候就遇到了這個問題,解決完後一直沒再出過問題,今天用以前的框架做新專案時又碰到了這個問題,這裡記錄一下
問題原因:
##1、TP5本就存在這個bug2、資料庫連線不正常(當專案連接資料庫不正常時驗證碼也會不顯示)##解決方法: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這個函數的作用:
用來丟棄輸出緩衝區中的內容,如果你的網站有許多產生的圖片類文件,那麼想要存取正確,就要經常清除緩衝區。
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影片教學
以上是如何解決thinkphp驗證碼不生效問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!