thinkphp 動態驗證碼

來源:互聯網
上載者:User

標籤:方式   驗證碼產生   date   字型   desc   else   set   動態   use   

<?phpnamespace Home\Controller;use Think\Controller;class TestController extends Controller{    public function test()    {       $y=D("YongHu");       $arr=array(       array(‘uid‘,‘require‘,‘使用者名稱不可為空!‘),  //表單驗證       );       if($y->validate($arr)->create())        //使用validate 把規則加進來 判斷是否成功       {                       $verify = new \Think\Verify();             $a= $verify->check($_POST["yzm"]); //驗證驗證碼的方法                      if($a)                            //驗證通過返回 true           {                                echo"11" ;  //驗證成功                 $y->add();                 $this->ajaxReturn("通過驗證","eval");             }           else           {            echo"22";   //驗證失敗           }       }       else       {           $this->ajaxReturn($y->getError(),"eval");//表單驗證錯誤資訊       }               }




public function yzm()   
{
$V= new \Think\Verify(); //產生動態圖驗證碼的方法
$V->entry();
}







 

驗證碼上一頁下一頁 

Think\Verify類可以支援驗證碼的產生和驗證功能。

產生驗證碼

下面是最簡單的方式產生驗證碼:

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

上面的代碼會產生預設的驗證碼圖片並輸出,顯示如下:

產生的驗證碼資訊會儲存到session中,包含的資料有:

  1. array(‘verify_code‘=>‘當前驗證碼的值‘,‘verify_time‘=>‘驗證碼產生的時間戳記‘)

如果你需要在一個頁面中產生多個驗證碼的話,entry方法需要傳入可標識的資訊,例如:驗證碼1:

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

驗證碼2:

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

可以對產生的驗證碼設定相關的參數,以達到不同的顯示效果。這些參數包括:

參數 描述
expire 驗證碼的有效期間(秒)
useImgBg 是否使用背景圖片 預設為false
fontSize 驗證碼字型大小(像素) 預設為25
useCurve 是否使用混淆曲線 預設為true
useNoise 是否添加雜點 預設為true
imageW 驗證碼寬度 設定為0為自動計算
imageH 驗證碼高度 設定為0為自動計算
length 驗證碼位元
fontttf 指定驗證碼字型 預設為隨機擷取
useZh 是否使用中文驗證碼
bg 驗證碼背景顏色 rgb數組設定,例如 array(243, 251, 254)
seKey 驗證碼的加密金鑰
codeSet 驗證碼字元集合 3.2.1 新增
zhSet 驗證碼字元集合(中文) 3.2.1 新增

參數設定使用兩種方式。

執行個體化傳入參數:

  1. $config = array(
  2. ‘fontSize‘ => 30, // 驗證碼字型大小
  3. ‘length‘ => 3, // 驗證碼位元
  4. ‘useNoise‘ => false, // 關閉驗證碼雜點
  5. );
  6. $Verify = new \Think\Verify($config);
  7. $Verify->entry();

或者採用動態設定的方式,如:

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

產生的驗證碼:

驗證碼字型

預設情況下,驗證碼的字型是隨機使用 ThinkPHP/Library/Think/Verify/ttfs/目錄下面的字型檔,我們可以指定驗證碼的字型,例如:

  1. $Verify = new \Think\Verify();
  2. // 驗證碼字型使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
  3. $Verify->fontttf = ‘5.ttf‘;
  4. $Verify->entry();
背景圖片

支援驗證碼背景圖片功能,可以如下設定:

  1. $Verify = new \Think\Verify();
  2. // 開啟驗證碼背景圖片功能 隨機使用 ThinkPHP/Library/Think/Verify/bgs 目錄下面的圖片
  3. $Verify->useImgBg = true;
  4. $Verify->entry();

效果:

中文驗證碼

如果要使用中文驗證碼,可以設定:

  1. $Verify = new \Think\Verify();
  2. // 驗證碼字型使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
  3. $Verify->useZh = true;
  4. $Verify->entry();

顯示效果

如果無法正常顯示,請確認你的 ThinkPHP/Library/Think/Verify/zhttfs/ 目錄下面存在中文字型檔。

指定驗證碼字元

3.2.1版本以上,我們可以指定驗證碼的字元,通過重新設定codeSet參數即可,例如:

  1. $Verify = new \Think\Verify();
  2. // 設定驗證碼字元為純數字
  3. $Verify->codeSet = ‘0123456789‘;
  4. $Verify->entry();

如果是中文驗證碼,可以使用zhSet參數設定,例如:

  1. $Verify = new \Think\Verify();
  2. $Verify->useZh = true;
  3. // 設定驗證碼字元
  4. $Verify->zhSet = ‘們以我到他會作時要動國產的一是工就年階義發成部民可出能方進在了不和有大這‘;
  5. $Verify->entry();
驗證碼檢測

可以用Think\Verify類的check方法檢測驗證碼的輸入是否正確,例如,下面是封裝的一個驗證碼檢測的函數:

  1. // 檢測輸入的驗證碼是否正確,$code為使用者輸入的驗證碼字串
  2. function check_verify($code, $id = ‘‘){
  3. $verify = new \Think\Verify();
  4. return $verify->check($code, $id);
  5. }
上一頁下一頁

thinkphp 動態驗證碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.