如何更改thinkphp默認(rèn)的驗(yàn)證碼

thinkphp是一款流行的php框架,用于開(kāi)發(fā)web應(yīng)用程序。在使用thinkphp框架時(shí),很多時(shí)候需要用到驗(yàn)證碼來(lái)增加系統(tǒng)的安全性。而thinkphp默認(rèn)的驗(yàn)證碼樣式和圖片可能不太適合某些應(yīng)用場(chǎng)景,需要進(jìn)行更改。本文就介紹一下如何更改thinkphp默認(rèn)的驗(yàn)證碼。

一、找到驗(yàn)證碼控制器

在thinkphp框架中,驗(yàn)證碼是由內(nèi)置的一個(gè)控制器進(jìn)行生成和輸出的。這個(gè)控制器的源代碼可以在thinkphp框架的庫(kù)文件目錄中找到,一般路徑是:thinkphp/library/think/captcha/Controller.php。

二、復(fù)制驗(yàn)證碼控制器

為了避免因?yàn)樾薷哪J(rèn)驗(yàn)證碼控制器而導(dǎo)致系統(tǒng)更新時(shí)出錯(cuò),應(yīng)該把默認(rèn)驗(yàn)證碼控制器復(fù)制到應(yīng)用目錄下的一個(gè)新的目錄中。

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

具體步驟如下:

  1. 創(chuàng)建一個(gè)新的目錄,例如:applicationextracaptcha
  2. 復(fù)制控制器Controller.php到該目錄下。
  3. 修改Controller.php的Namespace,將其修改為:namespace appextracaptcha;

三、修改驗(yàn)證碼控制器

現(xiàn)在我們就可以修改驗(yàn)證碼控制器,改變驗(yàn)證碼的生成方式和輸出方式了。

  1. 修改輸出方式

默認(rèn)驗(yàn)證碼的輸出方式是返回一個(gè)gif格式的圖片,而我們可以修改輸出方式來(lái)實(shí)現(xiàn)其他樣式的驗(yàn)證碼。例如,可以將驗(yàn)證碼輸出為SVG格式的圖片。

修改驗(yàn)證碼輸出方法如下:

public function show() {     $config =    [         'expire'   =>  3,   //驗(yàn)證碼過(guò)期時(shí)間(s)         'length'   =>  4,   //驗(yàn)證碼長(zhǎng)度         'imageH'   =>  60,   //驗(yàn)證碼高度         'fontSize' =>  20,  //驗(yàn)證碼字體大小(px)         'useCurve' =>  false,  //是否畫(huà)混淆曲線         'useNoise' =>  false,  //是否添加雜點(diǎn)         'bg'       =>  [255, 255, 255], //背景顏色     ];     $captcha = new Captcha($config);     $captcha->codeSet = '0123456789';//只用數(shù)字作為驗(yàn)證碼        // 輸出svg格式的圖片     echo $captcha->entry('svg');  }
  1. 修改驗(yàn)證碼生成方式

thinkphp默認(rèn)的驗(yàn)證碼生成方式是隨機(jī)生成數(shù)字和字母,而我們也可以修改生成方式來(lái)滿足不同的需求。例如,可以生成中文字符的驗(yàn)證碼。

修改驗(yàn)證碼生成方式如下(以生成中文驗(yàn)證碼為例):

public function show() {     //引入新字體文件(這里以方正胖頭魚(yú)體為例,字體文件需要自己上傳)     $ttf_file = __DIR__ .'/fzpty.ttf';     $codeSet = '玩家參與游戲,從而培養(yǎng)了自己 的游戲能力'; //驗(yàn)證碼文字內(nèi)容        $config =    [         'expire'  =>  3,   //驗(yàn)證碼過(guò)期時(shí)間(s)         'length'  =>  4,   //驗(yàn)證碼長(zhǎng)度         'useZh'   => true, //使用中文驗(yàn)證碼         'fontttf' =>  $ttf_file, //指定ttf字體文件         'imageH'  =>  60,   //驗(yàn)證碼高度         'fontSize' =>  20,  //驗(yàn)證碼字體大小(px)         'useCurve' =>  false,  //是否畫(huà)混淆曲線         'useNoise' =>  false,  //是否添加雜點(diǎn)         'bg'       =>  [255, 255, 255], //背景顏色     ];     $captcha = new Captcha($config);     $captcha->codeSet = $codeSet;//設(shè)置驗(yàn)證碼文字內(nèi)容        // 輸出svg格式的圖片     echo $captcha->entry('svg');  }

四、修改驗(yàn)證碼配置文件

thinkphp驗(yàn)證碼控制器會(huì)讀取配置文件中的參數(shù)來(lái)決定驗(yàn)證碼的生成和輸出方式。因此,我們也可以修改配置文件來(lái)達(dá)到更改驗(yàn)證碼的目的。

具體步驟如下:

  1. 復(fù)制框架默認(rèn)驗(yàn)證碼配置文件到自己的應(yīng)用目錄

打開(kāi)thinkphp框架的驗(yàn)證碼配置文件config.php,將其復(fù)制到應(yīng)用目錄下的config目錄下,并重命名為captcha.php。

  1. 修改驗(yàn)證碼配置

在captcha.php中可以修改驗(yàn)證碼的相關(guān)配置參數(shù)。例如,可以修改驗(yàn)證碼的長(zhǎng)度,過(guò)期時(shí)間,字體大小等參數(shù):

return [     'useNoise'    => false, // 是否添加雜點(diǎn)     'useCurve'    => false, // 是否畫(huà)混淆曲線     'fontSize'    => 25,    // 驗(yàn)證碼字體大小     'expire'      => 1800,  // 驗(yàn)證碼過(guò)期時(shí)間(s)     'length'      => 4,     // 驗(yàn)證碼長(zhǎng)度     'fontttf'     => '',    //驗(yàn)證碼字體文件路徑     'bg'          => [255, 255, 255], // 驗(yàn)證碼背景顏色,如果設(shè)置為數(shù)組則表示漸變色 ];

五、總結(jié)

通過(guò)以上步驟,我們可以對(duì)thinkphp默認(rèn)的驗(yàn)證碼進(jìn)行修改,實(shí)現(xiàn)自定義的樣式和驗(yàn)證碼內(nèi)容。需要注意的是,在修改驗(yàn)證碼控制器和配置文件時(shí),要將復(fù)制后的文件放到應(yīng)用目錄下,避免出現(xiàn)版本更新后覆蓋掉的情況。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊10 分享
站長(zhǎng)的頭像-小浪學(xué)習(xí)網(wǎng)月度會(huì)員