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