驗(yàn)證碼

首先使用Composer安裝think-captcha擴(kuò)展包:

composer require topthink/think-captcha

官方的5.0版本的擴(kuò)展庫(kù)版本號(hào)都是1.*,2.0版本均為T(mén)hinkPHP5.1版本專(zhuān)用。

驗(yàn)證碼的簡(jiǎn)單用法

擴(kuò)展包內(nèi)定義了一些常見(jiàn)用法方便使用,以下示例說(shuō)明

注意:需要開(kāi)啟URL路由。

模版內(nèi)驗(yàn)證碼的顯示

<div>{:captcha_img()}</div>

或者

<div><img src="{:captcha_src()}" alt="captcha" /></div>

上面兩種的最終效果是一樣的,根據(jù)需要調(diào)用即可。

使用TP5的內(nèi)置驗(yàn)證功能,添加captcha驗(yàn)證規(guī)則即可

$this->validate($data,[
    'captcha|驗(yàn)證碼'=>'require|captcha'
]);

或者手動(dòng)驗(yàn)證

if(!captcha_check($captcha)){
 //驗(yàn)證失敗
};

驗(yàn)證碼的自定義用法

如果項(xiàng)目未開(kāi)啟路由,或者有實(shí)際需求可自行調(diào)用Captcha類(lèi)操作

驗(yàn)證碼的生成:

$captcha = new Captcha();
return $captcha->entry();

如果你需要在一個(gè)頁(yè)面中生成多個(gè)驗(yàn)證碼的話(huà),entry方法需要傳入可標(biāo)識(shí)的信息,例如:

$captcha = new Captcha();
return $captcha->entry(1);

驗(yàn)證碼的驗(yàn)證:
可以用Captcha類(lèi)的check方法檢測(cè)驗(yàn)證碼的輸入是否正確,例如,下面是封裝的一個(gè)驗(yàn)證碼檢測(cè)的函數(shù):

// 檢測(cè)輸入的驗(yàn)證碼是否正確,$code為用戶(hù)輸入的驗(yàn)證碼字符串,$id多個(gè)驗(yàn)證碼標(biāo)識(shí)
function check_verify($code, $id = ''){
    $captcha = new Captcha();
    return $captcha->check($code, $id);
}

驗(yàn)證碼的配置參數(shù)

Captcha類(lèi)帶有默認(rèn)的配置參數(shù),支持自定義配置。這些參數(shù)包括:

如果使用了擴(kuò)展內(nèi)置的方法,務(wù)必在應(yīng)用配置文件中配置,5.0.1及以上支持者在應(yīng)用配置目錄下面extra子目錄內(nèi)配置captcha.php文件

參數(shù) 描述 默認(rèn)
codeSet 驗(yàn)證碼字符集合
expire 驗(yàn)證碼過(guò)期時(shí)間(s) 1800
useZh 使用中文驗(yàn)證碼 false
zhSet 中文驗(yàn)證碼字符串
useImgBg 使用背景圖片 false
fontSize 驗(yàn)證碼字體大小(px) 25
useCurve 是否畫(huà)混淆曲線 true
useNoise 是否添加雜點(diǎn) true
imageH 驗(yàn)證碼圖片高度,設(shè)置為0為自動(dòng)計(jì)算 0
imageW 驗(yàn)證碼圖片寬度,設(shè)置為0為自動(dòng)計(jì)算 0
length 驗(yàn)證碼位數(shù) 5
fontttf 驗(yàn)證碼字體,不設(shè)置是隨機(jī)獲取
bg 背景顏色 [243, 251, 254]
reset 驗(yàn)證成功后是否重置 true

參數(shù)設(shè)置使用兩種方式。
實(shí)例化傳入?yún)?shù):

$config =    [
    // 驗(yàn)證碼字體大小
    'fontSize'    =>    30,    
    // 驗(yàn)證碼位數(shù)
    'length'      =>    3,   
    // 關(guān)閉驗(yàn)證碼雜點(diǎn)
    'useNoise'    =>    false, 
];
$captcha = new Captcha($config);
return $captcha->entry();

或者采用動(dòng)態(tài)設(shè)置的方式,如:

$captcha = new Captcha();
$captcha->fontSize = 30;
$captcha->length   = 3;
$captcha->useNoise = false;
return $captcha->entry();

驗(yàn)證碼字體

默認(rèn)情況下,驗(yàn)證碼的字體是隨機(jī)使用擴(kuò)展包內(nèi) think-captcha/assets/ttfs目錄下面的字體文件,我們可以指定驗(yàn)證碼的字體,例如:

$captcha = new Captcha();
$captcha->fontttf = '5.ttf'; 
return $captcha->entry();

背景圖片

支持驗(yàn)證碼背景圖片功能,可以如下設(shè)置:

$captcha = new Captcha();
// 開(kāi)啟驗(yàn)證碼背景圖片功能 隨機(jī)使用擴(kuò)展包內(nèi)`think-captcha/assets/bgs`目錄下面的圖片
$captcha->useImgBg = true; 
return $captcha->entry();

中文驗(yàn)證碼

如果要使用中文驗(yàn)證碼,可以設(shè)置:

$captcha = new Captcha();
//中午 驗(yàn)證碼字體使用擴(kuò)展包內(nèi)`think-captcha/assets/zhttfs`字體文件
$captcha->useZh = true; 
return $captcha->entry();

指定驗(yàn)證碼字符

指定驗(yàn)證碼的字符,可以設(shè)置:

$captcha = new Captcha();
// 設(shè)置驗(yàn)證碼字符為純數(shù)字
$captcha->codeSet = '0123456789'; 
return $captcha->entry();

如果是中文驗(yàn)證碼,可以使用zhSet參數(shù)設(shè)置,例如:

$captcha = new Captcha();
$captcha->useZh = true;
// 設(shè)置驗(yàn)證碼字符
$captcha->zhSet = '們以我到他會(huì)作時(shí)要?jiǎng)訃?guó)產(chǎn)的一是工就年階義發(fā)成部民可出能方進(jìn)在了不和有大這'; 
return $captcha->entry();

默認(rèn)的驗(yàn)證碼字符已經(jīng)剔除了易混淆的1l0o等字符

文檔最后更新時(shí)間:2018-04-26 10:54:16

文檔
目錄

深色
模式

切換
寬度