<div class="truth">
世界上最強大的數據庫,不是Oracle,也不是sqlserver而是我們的大腦!
</div>
<blockquote class="default">
<p>知識點<br>
<p>
1.驗證碼顯示<br />
2.刷新驗證碼<br />
3.檢測驗證碼<br />
4.驗證碼設置<br />
</p>
<div class="env">版本:thinkphp5.07</div>
</blockquote>
<div class="step">1.安裝類庫</div>
<div class="info">
不得不說下,tp5使用了Composer,的確方便了許多,但是也有不足,比如驗證碼這塊,使用tp5核心庫就不能做,因為類庫欠缺,還沒地方去下載,只能通過Composer命令來完成他啊的安裝。不過本書的例子中,都已經安裝好了所需要的各種類庫。
<p>
在命令行下面切換到你的應用根目錄下面,執行
</p>
</div>
~~~
composer require topthink/think-captcha
~~~
<div class="info">將下載安裝captcha類庫到你的項目里。顯示如下,說明安裝成功</div>
~~~
>composer require topthink/think-captcha
Using version ^1.0 for topthink/think-captcha
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing topthink/think-captcha (v1.0.7)
Downloading: 100%
Writing lock file
Generating autoload files
~~~
<div class="step">2.顯示驗證碼</div>
<div class="info">
兩種顯示方式:
<p>1.{:captcha_img()},將顯示驗證碼圖片。
</p>
<p>2.通過img標簽來顯示。
</p>
</div>
`<img src="{:captcha_src()}" id="codeimage" alt="captcha" onclick="javascript:this.src = '/captcha.html?time=' + Math.random();" />`
<div class="step">3.刷新驗證碼</div>
<div class="info">
用第二種方法可以實現點擊刷新驗證碼
</div>
`<img src="{:captcha_src()}" id="codeimage" alt="captcha" onclick="javascript:this.src = '/captcha.html?time=' + Math.random();" />`
<div class="note">
?time=' + Math.random(); 這個必須寫上,因為在ie下,url不變化時候,圖片是刷新不出來的。
</div>
<div class="step">4.檢測驗證碼</div>
<div class="info">
下面來進行驗證碼檢測,在控制器中添加驗證方法check,代碼如下:
</div>
~~~
<?php
namespace app\index\controller;
class Captcha extends \think\Controller
{
// 驗證碼表單
public function index()
{
return $this->fetch();
}
// 驗證碼檢測
public function check($code='')
{
$captcha = new \think\captcha\Captcha();
if (!$captcha->check($code)) {
$this->error('驗證碼錯誤');
} else {
$this->success('驗證碼正確');
}
}
}
~~~
<div class="info">
擴展包內置提供了助手函數captcha_check用來檢測驗證碼,所以check方法可以簡化為:
</div>
~~~
<?php
namespace app\index\controller;
class Captcha extends \think\Controller
{
// 驗證碼表單
public function index()
{
return $this->fetch();
}
// 驗證碼檢測
public function check($code)
{
if (!captcha_check($code)) {
$this->error('驗證碼錯誤');
} else {
$this->success('驗證碼正確');
}
}
}
~~~
<div class="step">5.驗證碼配置</div>
<div class="info">
在文件中【application/config.php】,添加配置參數
</div>
~~~
'captcha' => [
// 字體大小
'fontSize' => 35,
// 驗證碼長度(位數)
'length' => 4,
],
~~~
<div class="info">
其他配置參數<br />
參數 描述<br />
seKey 驗證碼加密Key<br />
codeSet 驗證碼字符集合<br />
expire 驗證碼過期時間(秒)<br />
useZh 使用中文驗證碼<br />
useImgBg 使用背景圖片<br />
fontSize 字體大小(px)<br />
useCurve 是否添加混淆曲線<br />
useNoise 是否添加雜點<br />
imageH 驗證碼圖片高度<br />
imageW 驗證碼圖片寬度<br />
length 驗證碼長度<br />
fontttf 驗證碼字體<br />
bg 驗證碼圖片背景色<br />
reset 驗證成功后是否重置<br />
</div>
<div class="info">也可以設置中文驗證密碼</div>
~~~
'captcha' => [
// 使用中文驗證碼
'useZh' =>true,
// 字體大小
'fontSize' => 35,
// 驗證碼長度(位數)
'length' => 4,
],
~~~
<div class="info">
驗證碼背景圖配置
</div>
~~~
'captcha' => [
// 使用背景圖片
'useImgBg' => true
// 驗證碼長度(位數)
'length' => 4,
],
~~~
<div class="info">
多個驗證碼,請參考官方教程!
</div>