首頁  >  文章  >  php框架  >  如何解決thinkphp驗證碼不生效問題

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

藏色散人
藏色散人原創
2021-12-27 11:32:212630瀏覽

thinkphp驗證碼不生效的解決方案:1、在呼叫驗證碼之前加上「ob_clean();」語句;2、檢查下自己的資料庫設定檔並修改正確即可。

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

本文操作環境:Windows7系統、thinkphp v5.1版、Dell G3電腦。

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

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

分析:

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn