# 驗證碼
[上一頁](# "上一頁")[下一頁](# "下一頁")
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
- 環境要求
- 目錄結構
- 入口文件
- 自動生成
- 模塊
- 控制器
- 開發規范
- 配置
- 配置格式
- 配置加載
- 讀取配置
- 動態配置
- 擴展配置
- 批量配置
- 架構
- 模塊化設計
- URL模式
- 多層MVC
- CBD模式
- 命名空間
- 自動加載
- 應用模式
- 項目編譯
- 系統流程
- 路由
- 路由定義
- 規則路由
- 正則路由
- 靜態路由
- 閉包支持
- 實例說明
- 控制器
- 控制器定義
- 前置和后置操作
- Action參數綁定
- 偽靜態
- URL大小寫
- URL生成
- AJAX返回
- 跳轉和重定向
- 輸入變量
- 請求類型
- 空操作
- 空控制器
- 操作綁定到類
- 模型
- 模型定義
- 模型實例化
- 字段定義
- 連接數據庫
- 切換數據庫
- 分布式數據庫支持
- 連貫操作
- WHERE
- TABLE
- ALIAS
- DATA
- FIELD
- ORDER
- LIMIT
- PAGE
- GROUP
- HAVING
- JOIN
- UNION
- DISTINCT
- LOCK
- CACHE
- COMMENT
- RELATION
- 命名范圍
- CURD操作
- 數據創建
- 數據寫入
- 數據讀取
- 數據更新
- 數據刪除
- ActiveRecord
- 字段映射
- 查詢語言
- 查詢方式
- 表達式查詢
- 快捷查詢
- 區間查詢
- 組合查詢
- 統計查詢
- SQL查詢
- 動態查詢
- 子查詢
- 自動驗證
- 自動完成
- 參數綁定
- 虛擬模型
- 模型分層
- 視圖模型
- 關聯模型
- 高級模型
- Mongo模型
- 視圖
- 模板定義
- 模板主題
- 模板賦值
- 模板渲染
- 獲取模板地址
- 獲取內容
- 模板引擎
- 模板
- 變量輸出
- 系統變量
- 使用函數
- 默認值輸出
- 使用運算符
- 標簽庫
- 模板繼承
- 修改定界符
- 三元運算
- 包含文件
- 內置標簽
- Volist標簽
- Foreach標簽
- For標簽
- Switch標簽
- 比較標簽
- 范圍判斷標簽
- IF標簽
- Present標簽
- Empty標簽
- Defined標簽
- Assign標簽
- Define標簽
- 標簽嵌套
- import標簽
- 使用PHP代碼
- 原樣輸出
- 模板注釋
- 模板布局
- 模板替換
- 調試
- 調試模式
- 異常處理
- 日志記錄
- 頁面Trace
- Trace方法
- 變量調試
- 性能調試
- 錯誤調試
- 模型調試
- 緩存
- 數據緩存
- 快速緩存
- 查詢緩存
- SQL解析緩存
- 靜態緩存
- 安全
- 輸入過濾
- 表單合法性檢測
- 表單令牌
- 防止SQL注入
- 目錄安全文件
- 保護模板文件
- 上傳安全
- 防止XSS攻擊
- 其他安全建議
- 擴展
- 類庫擴展
- 驅動擴展
- 緩存驅動
- 數據庫驅動
- 日志驅動
- Session驅動
- 存儲驅動
- 模板引擎驅動
- 標簽庫驅動
- 行為擴展
- 標簽擴展
- Widget擴展
- 應用模式
- 部署
- PATH_INFO支持
- URL重寫
- 模塊部署
- 域名部署
- 入口綁定
- 替換入口
- 專題
- SESSION支持
- Cookie支持
- 多語言支持
- 數據分頁
- 文件上傳
- 驗證碼
- 圖像處理
- RESTFul
- RPC
- SAE
- IP獲取和定位
- 附錄
- 常量參考
- 配置參考
- 升級指導
- 更新日志
- 鳴謝
- 關于