## å®è£
é¦å
使ç¨`Composer`å®è£
`think-captcha`æ©å±å
ï¼
~~~
composer require topthink/think-captcha
~~~
>[danger] éªè¯ç åºéè¦å¼å¯Sessionæè½çæã
## 使ç¨
æ©å±å
å
å®ä¹äºä¸äºå¸¸è§ç¨æ³æ¹ä¾¿ä½¿ç¨ï¼å¯ä»¥æ»¡è¶³å¤§é¨å常ç¨åºæ¯ï¼ä»¥ä¸ç¤ºä¾è¯´æã
å¨æ¨¡çå
æ·»å éªè¯ç çæ¾ç¤ºä»£ç
~~~
<div>{:captcha_img()}</div>
~~~
æè
~~~
<div><img src="{:captcha_src()}" alt="captcha" /></div>
~~~
> ä¸é¢ä¸¤ç§çæç»æææ¯ä¸æ ·çï¼æ ¹æ®éè¦è°ç¨å³å¯ã
ç¶å使ç¨æ¡æ¶çå
ç½®éªè¯åè½ï¼å
·ä½å¯ä»¥åèéªè¯ç« èï¼ï¼æ·»å `captcha`éªè¯è§åå³å¯
~~~
$this->validate($data,[
'captcha|éªè¯ç '=>'require|captcha'
]);
~~~
å¦æ没æ使ç¨å
ç½®éªè¯åè½ï¼åå¯ä»¥è°ç å
ç½®çå½æ°æå¨éªè¯
~~~
if(!captcha_check($captcha)){
// éªè¯å¤±è´¥
};
~~~
å¦ææ¯å¤åºç¨æ¨¡å¼ä¸ï¼ä½ éè¦èªå·±æ³¨åä¸ä¸ªéªè¯ç çè·¯ç±ã
```
Route::get('captcha/[:config]','\\think\\captcha\\CaptchaController@index');
```
## é
ç½®
`Captcha`类带æé»è®¤çé
ç½®åæ°ï¼æ¯æèªå®ä¹é
ç½®ãè¿äºåæ°å
æ¬ï¼
| åæ° | æè¿° | é»è®¤ |
| --- | --- | --- |
| codeSet | éªè¯ç å符éå | ç¥ |
| expire | éªè¯ç è¿ææ¶é´ï¼sï¼ | 1800 |
| math| 使ç¨ç®æ¯éªè¯ç | false |
| useZh | 使ç¨ä¸æéªè¯ç | false |
| zhSet | ä¸æéªè¯ç å符串 | ç¥ |
| useImgBg | 使ç¨èæ¯å¾ç | false |
| fontSize | éªè¯ç åä½å¤§å°(px) | 25 |
| useCurve | æ¯å¦ç»æ··æ·æ²çº¿ | true |
| useNoise | æ¯å¦æ·»å æç¹ | true |
| imageH | éªè¯ç å¾çé«åº¦ï¼è®¾ç½®ä¸º0为èªå¨è®¡ç® | 0 |
| imageW | éªè¯ç å¾ç宽度ï¼è®¾ç½®ä¸º0为èªå¨è®¡ç® | 0 |
| length | éªè¯ç ä½æ° | 5 |
| fontttf | éªè¯ç åä½ï¼ä¸è®¾ç½®æ¯éæºè·å | 空 |
| bg | èæ¯é¢è² | \[243, 251, 254\] |
| reset | éªè¯æååæ¯å¦éç½® | true |
ç´æ¥å¨åºç¨ç`config`ç®å½ä¸é¢ç`captcha.php`æ件ä¸è¿è¡è®¾ç½®å³å¯ï¼ä¾å¦ä¸é¢çé
ç½®åæ°ç¨äºè¾åº4ä½æ°åéªè¯ç ã
```
return [
'length' => 4,
'codeSet' => '0123456789',
];
```
## èªå®ä¹éªè¯ç
å¦æéè¦èªå·±ç¬ç«çæéªè¯ç ï¼å¯ä»¥è°ç¨`Captcha`ç±»ï¼`think\captcha\facade\Captcha`ï¼æä½ã
å¨æ§å¶å¨ä¸ä½¿ç¨ä¸é¢ç代ç è¿è¡éªè¯ç çæï¼
~~~
<?php
namespace app\index\controller;
use think\captcha\facade\Captcha;
class Index
{
public function verify()
{
return Captcha::create();
}
}
~~~
ç¶å访é®ä¸é¢çå°åå°±å¯ä»¥æ¾ç¤ºéªè¯ç ï¼
~~~
http://serverName/index/index/verify
~~~
è¾åºææå¦å¾
![](https://box.kancloud.cn/dcbf30b119dc2bb7ec6f41d943b5646c_250x62.png)
é常å¯ä»¥ç»éªè¯ç å°å注åè·¯ç±
~~~
Route::get('verify','index/verify');
~~~
å¨æ¨¡æ¿ä¸å°±å¯ä»¥ä½¿ç¨ä¸é¢ç代ç æ¾ç¤ºéªè¯ç å¾ç
~~~
<div><img src="{:url('index/verify')}" alt="captcha" /></div>
~~~
å¯ä»¥ç¨`Captcha`ç±»ç`check`æ¹æ³æ£æµéªè¯ç çè¾å
¥æ¯å¦æ£ç¡®ï¼
~~~
// æ£æµè¾å
¥çéªè¯ç æ¯å¦æ£ç¡®ï¼$value为ç¨æ·è¾å
¥çéªè¯ç å符串
$captcha = new Captcha();
if( !$captcha->check($value))
{
// éªè¯å¤±è´¥
}
~~~
æè
ç´æ¥è°ç¨å°è£
çä¸ä¸ªéªè¯ç æ£æµçå½æ°`captcha_check`
~~~
// æ£æµè¾å
¥çéªè¯ç æ¯å¦æ£ç¡®ï¼$value为ç¨æ·è¾å
¥çéªè¯ç å符串
if( !captcha_check($value ))
{
// éªè¯å¤±è´¥
}
~~~
å¦æä½ éè¦çæå¤ä¸ªä¸å设置çéªè¯ç ï¼å¯ä»¥ä½¿ç¨ä¸é¢çé
ç½®æ¹å¼ï¼
```
<?php
return [
'verify'=>[
'codeSet'=>'1234567890'
]
];
```
使ç¨æå®çé
ç½®çæéªè¯ç :
~~~
return Captcha::create('verify');
~~~
é»è®¤æ
åµä¸ï¼éªè¯ç çåä½æ¯éæºä½¿ç¨æ©å±å
å
`think-captcha/assets/ttfs`ç®å½ä¸é¢çåä½æ件ï¼æ们å¯ä»¥æå®éªè¯ç çåä½ï¼ä¾å¦ï¼
ä¿®æ¹ææ°å»ºé
ç½®æ件å¦ä¸:
```
<?php
return [
'verify'=>[
'fontttf'=>'1.ttf'
]
];
```
~~~
return Captcha::create('verify');
~~~
> é»è®¤çéªè¯ç å符已ç»åé¤äºææ··æ·ç`1l0o`çå符
- åºè¨
- åºç¡
- å®è£
- å¼åè§è
- ç®å½ç»æ
- é ç½®
- æ¶æ
- 请æ±æµç¨
- æ¶ææ»è§
- å ¥å£æ件
- å¤åºç¨æ¨¡å¼
- URL访é®
- 容å¨åä¾èµæ³¨å ¥
- æå¡
- é¨é¢
- ä¸é´ä»¶
- äºä»¶
- è·¯ç±
- è·¯ç±å®ä¹
- åéè§å
- è·¯ç±å°å
- è·¯ç±åæ°
- è·¯ç±ä¸é´ä»¶
- è·¯ç±åç»
- èµæºè·¯ç±
- 注解路ç±
- è·¯ç±ç»å®
- ååè·¯ç±
- MISSè·¯ç±
- è·¨å请æ±
- URLçæ
- æ§å¶å¨
- æ§å¶å¨å®ä¹
- åºç¡æ§å¶å¨
- 空æ§å¶å¨
- èµæºæ§å¶å¨
- æ§å¶å¨ä¸é´ä»¶
- 请æ±
- 请æ±å¯¹è±¡
- 请æ±ä¿¡æ¯
- è¾å ¥åé
- 请æ±ç±»å
- HTTP头信æ¯
- 伪éæ
- åæ°ç»å®
- 请æ±ç¼å
- ååº
- ååºè¾åº
- ååºåæ°
- éå®å
- æ件ä¸è½½
- æ°æ®åº
- è¿æ¥æ°æ®åº
- åå¸å¼æ°æ®åº
- æ¥è¯¢æé å¨
- æ¥è¯¢æ°æ®
- æ·»å æ°æ®
- æ´æ°æ°æ®
- å é¤æ°æ®
- æ¥è¯¢è¡¨è¾¾å¼
- é¾å¼æä½
- where
- table
- alias
- field
- strict
- limit
- page
- order
- group
- having
- join
- union
- distinct
- lock
- cache
- comment
- fetchSql
- force
- partition
- failException
- sequence
- replace
- extra
- duplicate
- procedure
- èåæ¥è¯¢
- å页æ¥è¯¢
- æ¶é´æ¥è¯¢
- é«çº§æ¥è¯¢
- è§å¾æ¥è¯¢
- JSONå段
- åæ¥è¯¢
- åçæ¥è¯¢
- æ¥è¯¢äºä»¶
- è·åå¨
- äºå¡æä½
- åå¨è¿ç¨
- æ°æ®é
- æ°æ®åºé©±å¨
- 模å
- å®ä¹
- 模åå段
- æ°å¢
- æ´æ°
- å é¤
- æ¥è¯¢
- æ¥è¯¢èå´
- JSONå段
- è·åå¨
- ä¿®æ¹å¨
- æç´¢å¨
- æ°æ®é
- èªå¨æ¶é´æ³
- åªè¯»å段
- 软å é¤
- ç±»å转æ¢
- 模åè¾åº
- 模åäºä»¶
- 模åå ³è
- ä¸å¯¹ä¸å ³è
- ä¸å¯¹å¤å ³è
- è¿ç¨ä¸å¯¹å¤
- è¿ç¨ä¸å¯¹ä¸
- å¤å¯¹å¤å ³è
- å¤æå ³è
- å ³èé¢è½½å ¥
- å ³èç»è®¡
- å ³èè¾åº
- è§å¾
- 模æ¿åé
- è§å¾è¿æ»¤
- 模æ¿æ¸²æ
- 模æ¿å¼æ
- è§å¾é©±å¨
- é误åæ¥å¿
- å¼å¸¸å¤ç
- æ¥å¿å¤ç
- è°è¯
- è°è¯æ¨¡å¼
- Traceè°è¯
- SQLè°è¯
- åéè°è¯
- è¿ç¨è°è¯
- éªè¯
- éªè¯å¨
- éªè¯è§å
- é误信æ¯
- éªè¯åºæ¯
- è·¯ç±éªè¯
- å ç½®è§å
- 表å令ç
- 注解éªè¯
- æ项
- ç¼å
- Session
- Cookie
- å¤è¯è¨
- ä¸ä¼
- å½ä»¤è¡
- å¯å¨å ç½®æå¡å¨
- æ¥ççæ¬
- èªå¨çæåºç¨ç®å½
- å建类åºæ件
- æ¸ é¤ç¼åæ件
- çææ°æ®è¡¨å段ç¼å
- çæè·¯ç±æ å°ç¼å
- è¾åºè·¯ç±å®ä¹
- èªå®ä¹æ令
- æ©å±åº
- æ°æ®åºè¿ç§»å·¥å ·
- Workerman
- thinkå©æå·¥å ·åº
- éªè¯ç
- Swoole
- éå½
- å©æå½æ°
- å级æ导
- æ´æ°æ¥å¿