首頁  >  文章  >  php框架  >  如何更改thinkphp預設的驗證碼

如何更改thinkphp預設的驗證碼

PHPz
PHPz原創
2023-04-13 18:34:161046瀏覽

thinkphp是一款流行的PHP框架,用於開發Web應用程式。使用thinkphp框架時,很多時候需要用到驗證碼來增加系統的安全性。而thinkphp預設的驗證碼樣式和圖片可能不太適合某些應用場景,需要進行更改。本文就介紹如何更改thinkphp預設的驗證碼。

一、找到驗證碼控制器

在thinkphp框架中,驗證碼是由內建的一個控制器進行產生和輸出的。這個控制器的原始碼可以在thinkphp框架的函式庫檔案目錄中找到,一般路徑是:thinkphp/library/think/captcha/Controller.php。

二、複製驗證碼控制器

為了避免因為修改預設驗證碼控制器而導致系統更新時出錯,應該把預設驗證碼控制器複製到應用程式目錄下的一個新的目錄中。

具體步驟如下:

  1. 建立一個新的目錄,例如:\application\extra\captcha
  2. 複製控制器Controller.php到該目錄下。
  3. 修改Controller.php的namespace,將其修改為:namespace app\extra\captcha;

三、修改驗證碼控制器

現在我們就可以修改驗證碼控制器,改變驗證碼的產生方式和輸出方式了。

  1. 修改輸出方式

預設驗證碼的輸出方式是傳回一個gif格式的圖片,而我們可以修改輸出方式來實作其他樣式的驗證碼。例如,可以將驗證碼輸出為SVG格式的圖片。

修改驗證碼輸出方法如下:

public function show()
{
    $config =    [
        'expire'   =>  3,   //验证码过期时间(s)
        'length'   =>  4,   //验证码长度
        'imageH'   =>  60,   //验证码高度
        'fontSize' =>  20,  //验证码字体大小(px)
        'useCurve' =>  false,  //是否画混淆曲线
        'useNoise' =>  false,  //是否添加杂点
        'bg'       =>  [255, 255, 255], //背景颜色
    ];
    $captcha = new Captcha($config);
    $captcha->codeSet = '0123456789';//只用数字作为验证码
  
    // 输出svg格式的图片
    echo $captcha->entry('svg'); 
}
  1. 修改驗證碼產生方式

thinkphp預設的驗證碼產生方式是隨機產生數字和字母,而我們也可以修改生成方式來滿足不同的需求。例如,可以產生中文字元的驗證碼。

修改驗證碼產生方式如下(以產生中文驗證碼為例):

public function show()
{
    //引入新字体文件(这里以方正胖头鱼体为例,字体文件需要自己上传)
    $ttf_file = __DIR__ .'/fzpty.ttf';
    $codeSet = '玩家参与游戏,从而培养了自己 的游戏能力'; //验证码文字内容
  
    $config =    [
        'expire'  =>  3,   //验证码过期时间(s)
        'length'  =>  4,   //验证码长度
        'useZh'   => true, //使用中文验证码
        'fontttf' =>  $ttf_file, //指定ttf字体文件
        'imageH'  =>  60,   //验证码高度
        'fontSize' =>  20,  //验证码字体大小(px)
        'useCurve' =>  false,  //是否画混淆曲线
        'useNoise' =>  false,  //是否添加杂点
        'bg'       =>  [255, 255, 255], //背景颜色
    ];
    $captcha = new Captcha($config);
    $captcha->codeSet = $codeSet;//设置验证码文字内容
  
    // 输出svg格式的图片
    echo $captcha->entry('svg'); 
}

四、修改驗證碼設定檔

thinkphp驗證碼控制器會讀取設定檔中的參數來決定驗證碼的產生和輸出方式。因此,我們也可以修改設定檔來達到更改驗證碼的目的。

具體步驟如下:

  1. 複製框架預設驗證碼設定檔到自己的應用程式目錄

開啟thinkphp框架的驗證碼設定檔config. php,將其複製到應用目錄下的config目錄下,並重新命名為captcha.php。

  1. 修改驗證碼配置

在captcha.php中可以修改驗證碼的相關設定參數。例如,可以修改驗證碼的長度,過期時間,字體大小等參數:

return [
    'useNoise'    => false, // 是否添加杂点
    'useCurve'    => false, // 是否画混淆曲线
    'fontSize'    => 25,    // 验证码字体大小
    'expire'      => 1800,  // 验证码过期时间(s)
    'length'      => 4,     // 验证码长度
    'fontttf'     => '',    //验证码字体文件路径
    'bg'          => [255, 255, 255], // 验证码背景颜色,如果设置为数组则表示渐变色
];

五、總結

透過以上步驟,我們可以對thinkphp預設的驗證碼進行修改,實作自定義的樣式和驗證碼內容。要注意的是,在修改驗證碼控制器和設定檔時,要將複製後的檔案放到應用程式目錄下,避免出現版本更新後會覆寫的情況。

以上是如何更改thinkphp預設的驗證碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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