<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>