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


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

 

問題原因:

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();
    }

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,
];

 

函數詳解:ob_clean();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM