【小(xiǎo)編推薦】ThinkPHP3.2——驗證碼

2014-06-26  &nb& ©≤sp;|   發☆₩✔σ布者:梁國(guó)芳   § ;|   查看(kàn):33δα20次

Thinkphp

Think\Verify類可(kě)以支持驗€&→↕證碼的(de)生(shēng)成和(hé)驗證功能(néng)。

生(shēng)成驗證碼

下(xià)面是(shì)最簡單的(de)方式生(shēng)成驗證碼:

  1. $Verify = new \Think\Verify();
  2. $Verify->entry();

上(shàng)面的(de)代碼會(huì)生(shēng)成默認的(γ♣de)驗證碼圖片并輸出,顯示如(rú)下(xi©↑à):

verify

生(shēng)成的(de)驗證碼信息會(huì)保存到(dào)sessi♦Ω∞∏on中,包含的(de)數(shù)據有(yǒu):

  1. array('verify_code'=>'當前驗證碼的(de)值','verify_time'=>'驗證碼生(shēng)成的(de)時(shí)間(jiā÷¥→n)戳')

如(rú)果你(nǐ)需要(yào)在一(y☆★ī)個(gè)頁面中生(shēng)成多(duō)個(gè)驗證碼的(d§δe)話(huà),entry方法需要(yào)♦©δ 傳入可(kě)标識的(de)信息,例如(rú): 驗證碼1:

  1. // 驗證碼1
  2. $Verify = new \Think\Verify();
  3. $Verify->entry(1);

驗證碼2:

  1. // 驗證碼2
  2. $Verify = new \Think\Verify();
  3. $Verify->entry(2);

驗證碼參數(shù)

可(kě)以對(duì)生(shēng)成的(de)•★₹≠驗證碼設置相(xiàng)關的(de)參數(shù),以達到(dàoφ↕φ)不(bù)同的(de)顯示效果。 這(zhè)些(¥∏xiē)參數(shù)包括:

參數(shù) 描述
expire 驗證碼的(de)有(yǒu)效期(秒(miǎo))
useImgBg 是(shì)否使用(yòng)背景圖片 默認為(wèi)false
fontSize 驗證碼字體(tǐ)大(dà)小(xiǎo)(像φ∏≠‌素) 默認為(wèi)25
useCurve 是(shì)否使用(yòng)混淆曲線 默認為(wèi)true
useNoise 是(shì)否添加雜(zá)點 默認為(wèi)true
imageW 驗證碼寬度 設置為(wèi)0為(wèi)自(zì)動計(jì)算(su<♠×àn)
imageH 驗證碼高(gāo)度 設置為(wèi)0為(wèi)自(zì)動計(jì)算★↕"σ(suàn)
length 驗證碼位數(shù)
fontttf 指定驗證碼字體(tǐ) 默認為(wèi)随機(jī)獲取
useZh 是(shì)否使用(yòng)中文(wén)驗證碼
bg 驗證碼背景顔色 rgb數(shù)組設置,例如♠≥(rú) array(243, 251, 254)
seKey 驗證碼的(de)加密密鑰
codeSet 驗證碼字符集合 3.2.1 新增
zhSet 驗證碼字符集合(中文(wén)) 3.2.1 新增

參數(shù)設置使用(yòng)兩種方式。

實例化(huà)傳入參數(shù):

  1. $config = array(
  2. 'fontSize' => 30, // 驗證碼字體(tǐ)大(dà)小(xiǎo)
  3. 'length' => 3, // 驗證碼位數(shù)
  4. 'useNoise' => false, // 關閉驗證碼雜(zá)點
  5. );
  6. $Verify = new \Think\Verify($config);
  7. $Verify->entry();

或者采用(yòng)動态設置的(de)方式,如(rú∞£€):

  1. $Verify = new \Think\Verify();
  2. $Verify->fontSize = 30;
  3. $Verify->length = 3;
  4. $Verify->useNoise = false;
  5. $Verify->entry();

生(shēng)成的(de)驗證碼如(rú)圖所示:

localhost

驗證碼字體(tǐ)

默認情況下(xià),驗證碼的(de)字體(tǐ♥π)是(shì)随機(jī)使用(yòng) ThinkPHP/Library/Think/Verify/ttf →×s/目錄下(xià)面的(de)字體(tǐ)文(wén)件(jiàn),我們可(↑₽★kě)以指定驗證碼的(de)字體(tǐ),例如(rú):

  1. $Verify = new \Think\Verify();
  2. // 驗證碼字體(tǐ)使用(yòng)¶" ThinkPHP/Library/Think¥×♦/Verify/ttfs/5.ttf
  3. $Verify->fontttf = '5.ttf';
  4. $Verify->entry();

背景圖片

支持驗證碼背景圖片功能(néng),可(k ÷ě)以如(rú)下(xià)設置:

  1. $Verify = new \Think\Verify();
  2. // 開(kāi)啓驗證碼背景圖片功能(néng) 随機(jī)使用(yòng‍ ) ThinkPHP/Library/Think/Verify/bgα≤✘s 目錄下(xià)面的(de)圖片
  3. $Verify->useImgBg = true;
  4. $Verify->entry();

效果如(rú)圖所示:

localhost(2)

中文(wén)驗證碼

如(rú)果要(yào)使用(yòng)中文(wén)驗證碼,可(kě♠™★∏)以設置:

  1. $Verify = new \Think\Verify();
  2. // 驗證碼字體(tǐ)使用(yòng) Think‍α PHP/Library/Think/Verify/ttfs/5‍♣‌φ.ttf
  3. $Verify->useZh = true;
  4. $Verify->entry();

顯示效果如(rú)圖:

logo

如(rú)果無法正常顯示,請(qǐng)确認你(nǐ)←γ的(de) ThinkPHP/LibraryΩ&γ÷/Think/Verify/zhttfs§σπ/ 目錄下(xià)面存在中文(wén)字體(tǐ)文(wén)件(j←✘β≠iàn)。

指定驗證碼字符

3.2.1版本以上(shàng),我們可(kě)以指定驗證碼的<>¥♦(de)字符,通(tōng)過重新設置codeSet參數(shù)即可(kě),例如(rú)★×←:

  1. $Verify = new \Think\Verify();
  2. // 設置驗證碼字符為(wèi)純數(shù ∞α)字
  3. $Verify->codeSet = '0123456789';
  4. $Verify->entry();

如(rú)果是(shì)中文(wén)驗證碼,可σ↓γ★(kě)以使用(yòng)zhSet參數(shù)設置,例如(rú):

  1. $Verify = new \Think\Verify();
  2. $Verify->useZh = true;
  3. // 設置驗證碼字符
  4. $Verify->zhSet = '們以我到(dào)他(tā)會(huì)作(zuò)時(£≠≥→shí)要(yào)動國(guó)産的(de)一(yī)是(÷↑¥shì)工(gōng)就(jiù)年(nián)階£ &義發成部民(mín)可(kě)出能(néng)方進在了(le)不(bù)和πφ∑±(hé)有(yǒu)大(dà)這(zhè)★←€';
  5. $Verify->entry();

驗證碼檢測

可(kě)以用(yòng)Think\Verify Ω類的(de)check方法檢測驗證碼的(de)輸入是(shì)否正确,例如(rú),下(xià→© £)面是(shì)封裝的(de)一(yī)個(gè)驗證碼檢測的♣Ω​(de)函數(shù):

  1. // 檢測輸入的(de)驗證碼是(shì)否正确,$code>>為(wèi)用(yòng)戶輸入的(de)驗證碼字符串
  2. function check_verify($code, $id = ''){
  3. $verify = new \Think\Verify();
  4. return $verify->check($code, $id);
  5. }