如何基于ThinkPHP5.0框架和第三方库实现自定义验证码功能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1109个文字,预计阅读时间需要5分钟。
本例讲述了ThinkPHP5.0框架验证码功能实现方法。分享给广大开发者参考,具体如下:
背景:ThinkPHP5.0框架已存在很长时间,近期有所更新。下面介绍一下常用的第三方验证码功能的使用。
使用方法:
1.安装验证码插件:在ThinkPHP5.0项目中,可以通过composer安装验证码插件,例如:phpcaptcha。
2.配置验证码插件:在配置文件中设置验证码的相关参数,如验证码长度、字符类型等。
3.在控制器中调用验证码生成方法:在控制器中调用验证码插件的生成方法,生成验证码图片。
4.显示验证码图片:将生成的验证码图片赋值给模板变量,在模板中显示验证码图片。
5.验证用户输入的验证码:在控制器中获取用户输入的验证码,与生成的验证码进行比对,判断是否正确。
示例代码:
php
// 安装验证码插件composer require phpcaptcha/phpcaptcha// 配置验证码插件'captcha'=> [ 'class'=> 'Captcha\Driver\DefaultDriver', 'width'=> 150, 'height'=> 40, 'length'=> 4, 'font'=> 'path/to/font.ttf', 'font_size'=> 20, 'font_color'=> '#000000', 'line_color'=> '#000000', 'image_color'=> '#FFFFFF', 'angle'=> 30, 'noise'=> 0, 'noise_color'=> '#000000', 'noise_num'=> 50, 'noise_type'=> 'random', 'noise_image'=> 'path/to/noise.png', 'text'=> 'path/to/text.png', 'text_type'=> 'random', 'text_num'=> 1, 'text_color'=> '#000000', 'text_font'=> 'path/to/font.ttf', 'text_font_size'=> 20, 'text_angle'=> 30,],
控制器中使用验证码:
phppublic function captcha(){ $captcha=new Captcha(); $code=$captcha->generate(); $this->assign('captcha_code', $code); return $this->fetch();}
// 验证用户输入的验证码public function verify(){ $input_code=input('post.captcha_code'); $captcha_code=session('captcha_code'); if ($input_code==$captcha_code) { // 验证成功 return json(['status'=> 1, 'message'=> '验证成功']); } else { // 验证失败 return json(['status'=> 0, 'message'=> '验证失败']); }}
模板中使用验证码:
本文实例讲述了ThinkPHP5.0框架验证码功能实现方法。分享给大家供大家参考,具体如下:
背景
ThinkPHP5.0 已经出现很久了,最近有所接触,下面介绍一下常用的第三方验证码功能的使用。
♜ 功能开发
1).引入第三方扩展包
进行 TP5 的开发,Composer 的使用会成为重要技能,以 windows 为例子,输入命令:
composer require topthink/think-captcha
完成上述操作,会在以下目录中出现 captcha 的扩展包
..\vendor\topthink\think-captcha
2).前端设置
在前端页面需要显示验证码的位置,补充 {:captcha_img()} 即可,个人代码举例如下:
<p class="pass-form-item"> <label class="pass-label">验证码</label> <input type="text" name="verifyCode" class="pass-text-input " placeholder="请输入验证码"> <div>{:captcha_img()}</div> </p>
3). captcha 扩展包代码优化
如果按照上述操作,显示的验证码图片并不能点击刷新,可自己根据需求进行刷新功能设计;或者,建议进行下面的代码优化:
function captcha_img($id = "") { $js_src = "this.src='".captcha_src()."'"; return '<img src="' . captcha_src($id) . '" title="点击更新验证码" alt="点击更新验证码" onclick="'.$js_src.'" />'; //return ' . ')'; }
打开 ..\vendor\topthink\think-captcha\src\helper.php 文件,替换上面的 captcha_img() 方法代码.
此时的验证码图片即可实现点击 实时刷新 功能.
4). 后台代码验证
根据前端请求而来的 verifyCode 数据,调用 helper.php 中的 captcha_check() 方法,进行验证。
if(request()->isPost()){ $data = input('post.'); if(!captcha_check($data['verifyCode'])) { // 校验失败 $this->error('验证码不正确'); } }
♞ 提示
官方文档——
- 建议阅读 ..\vendor\topthink\think-captcha\src\helper.php 文件,及 Captcha.php ,可以进行样式的自定义.
- 如果前端
{:captcha_img()}有传值 id,那么后台captcha_check()验证也需要相应的 id 参数区分。 - 验证结果,普遍使用 ajax 请求,以满足用户顺畅的体验.
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
本文共计1109个文字,预计阅读时间需要5分钟。
本例讲述了ThinkPHP5.0框架验证码功能实现方法。分享给广大开发者参考,具体如下:
背景:ThinkPHP5.0框架已存在很长时间,近期有所更新。下面介绍一下常用的第三方验证码功能的使用。
使用方法:
1.安装验证码插件:在ThinkPHP5.0项目中,可以通过composer安装验证码插件,例如:phpcaptcha。
2.配置验证码插件:在配置文件中设置验证码的相关参数,如验证码长度、字符类型等。
3.在控制器中调用验证码生成方法:在控制器中调用验证码插件的生成方法,生成验证码图片。
4.显示验证码图片:将生成的验证码图片赋值给模板变量,在模板中显示验证码图片。
5.验证用户输入的验证码:在控制器中获取用户输入的验证码,与生成的验证码进行比对,判断是否正确。
示例代码:
php
// 安装验证码插件composer require phpcaptcha/phpcaptcha// 配置验证码插件'captcha'=> [ 'class'=> 'Captcha\Driver\DefaultDriver', 'width'=> 150, 'height'=> 40, 'length'=> 4, 'font'=> 'path/to/font.ttf', 'font_size'=> 20, 'font_color'=> '#000000', 'line_color'=> '#000000', 'image_color'=> '#FFFFFF', 'angle'=> 30, 'noise'=> 0, 'noise_color'=> '#000000', 'noise_num'=> 50, 'noise_type'=> 'random', 'noise_image'=> 'path/to/noise.png', 'text'=> 'path/to/text.png', 'text_type'=> 'random', 'text_num'=> 1, 'text_color'=> '#000000', 'text_font'=> 'path/to/font.ttf', 'text_font_size'=> 20, 'text_angle'=> 30,],
控制器中使用验证码:
phppublic function captcha(){ $captcha=new Captcha(); $code=$captcha->generate(); $this->assign('captcha_code', $code); return $this->fetch();}
// 验证用户输入的验证码public function verify(){ $input_code=input('post.captcha_code'); $captcha_code=session('captcha_code'); if ($input_code==$captcha_code) { // 验证成功 return json(['status'=> 1, 'message'=> '验证成功']); } else { // 验证失败 return json(['status'=> 0, 'message'=> '验证失败']); }}
模板中使用验证码:
本文实例讲述了ThinkPHP5.0框架验证码功能实现方法。分享给大家供大家参考,具体如下:
背景
ThinkPHP5.0 已经出现很久了,最近有所接触,下面介绍一下常用的第三方验证码功能的使用。
♜ 功能开发
1).引入第三方扩展包
进行 TP5 的开发,Composer 的使用会成为重要技能,以 windows 为例子,输入命令:
composer require topthink/think-captcha
完成上述操作,会在以下目录中出现 captcha 的扩展包
..\vendor\topthink\think-captcha
2).前端设置
在前端页面需要显示验证码的位置,补充 {:captcha_img()} 即可,个人代码举例如下:
<p class="pass-form-item"> <label class="pass-label">验证码</label> <input type="text" name="verifyCode" class="pass-text-input " placeholder="请输入验证码"> <div>{:captcha_img()}</div> </p>
3). captcha 扩展包代码优化
如果按照上述操作,显示的验证码图片并不能点击刷新,可自己根据需求进行刷新功能设计;或者,建议进行下面的代码优化:
function captcha_img($id = "") { $js_src = "this.src='".captcha_src()."'"; return '<img src="' . captcha_src($id) . '" title="点击更新验证码" alt="点击更新验证码" onclick="'.$js_src.'" />'; //return ' . ')'; }
打开 ..\vendor\topthink\think-captcha\src\helper.php 文件,替换上面的 captcha_img() 方法代码.
此时的验证码图片即可实现点击 实时刷新 功能.
4). 后台代码验证
根据前端请求而来的 verifyCode 数据,调用 helper.php 中的 captcha_check() 方法,进行验证。
if(request()->isPost()){ $data = input('post.'); if(!captcha_check($data['verifyCode'])) { // 校验失败 $this->error('验证码不正确'); } }
♞ 提示
官方文档——
- 建议阅读 ..\vendor\topthink\think-captcha\src\helper.php 文件,及 Captcha.php ,可以进行样式的自定义.
- 如果前端
{:captcha_img()}有传值 id,那么后台captcha_check()验证也需要相应的 id 参数区分。 - 验证结果,普遍使用 ajax 请求,以满足用户顺畅的体验.
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

