標籤:方式 驗證碼產生 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類可以支援驗證碼的產生和驗證功能。
產生驗證碼
下面是最簡單的方式產生驗證碼:
$Verify = new \Think\Verify();
$Verify->entry();
上面的代碼會產生預設的驗證碼圖片並輸出,顯示如下:
產生的驗證碼資訊會儲存到session中,包含的資料有:
array(‘verify_code‘=>‘當前驗證碼的值‘,‘verify_time‘=>‘驗證碼產生的時間戳記‘)
如果你需要在一個頁面中產生多個驗證碼的話,entry方法需要傳入可標識的資訊,例如:驗證碼1:
// 驗證碼1
$Verify = new \Think\Verify();
$Verify->entry(1);
驗證碼2:
// 驗證碼2
$Verify = new \Think\Verify();
$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 新增 |
參數設定使用兩種方式。
執行個體化傳入參數:
$config = array(
‘fontSize‘ => 30, // 驗證碼字型大小
‘length‘ => 3, // 驗證碼位元
‘useNoise‘ => false, // 關閉驗證碼雜點
);
$Verify = new \Think\Verify($config);
$Verify->entry();
或者採用動態設定的方式,如:
$Verify = new \Think\Verify();
$Verify->fontSize = 30;
$Verify->length = 3;
$Verify->useNoise = false;
$Verify->entry();
產生的驗證碼:
驗證碼字型
預設情況下,驗證碼的字型是隨機使用 ThinkPHP/Library/Think/Verify/ttfs/目錄下面的字型檔,我們可以指定驗證碼的字型,例如:
$Verify = new \Think\Verify();
// 驗證碼字型使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
$Verify->fontttf = ‘5.ttf‘;
$Verify->entry();
背景圖片
支援驗證碼背景圖片功能,可以如下設定:
$Verify = new \Think\Verify();
// 開啟驗證碼背景圖片功能 隨機使用 ThinkPHP/Library/Think/Verify/bgs 目錄下面的圖片
$Verify->useImgBg = true;
$Verify->entry();
效果:
中文驗證碼
如果要使用中文驗證碼,可以設定:
$Verify = new \Think\Verify();
// 驗證碼字型使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf
$Verify->useZh = true;
$Verify->entry();
顯示效果
如果無法正常顯示,請確認你的 ThinkPHP/Library/Think/Verify/zhttfs/ 目錄下面存在中文字型檔。
指定驗證碼字元
3.2.1版本以上,我們可以指定驗證碼的字元,通過重新設定codeSet參數即可,例如:
$Verify = new \Think\Verify();
// 設定驗證碼字元為純數字
$Verify->codeSet = ‘0123456789‘;
$Verify->entry();
如果是中文驗證碼,可以使用zhSet參數設定,例如:
$Verify = new \Think\Verify();
$Verify->useZh = true;
// 設定驗證碼字元
$Verify->zhSet = ‘們以我到他會作時要動國產的一是工就年階義發成部民可出能方進在了不和有大這‘;
$Verify->entry();
驗證碼檢測
可以用Think\Verify類的check方法檢測驗證碼的輸入是否正確,例如,下面是封裝的一個驗證碼檢測的函數:
// 檢測輸入的驗證碼是否正確,$code為使用者輸入的驗證碼字串
function check_verify($code, $id = ‘‘){
$verify = new \Think\Verify();
return $verify->check($code, $id);
}
上一頁下一頁
thinkphp 動態驗證碼