详解ThinkPHP3.2.3验证码显示、刷新、校验
发布时间 - 2026-01-10 22:11:42 点击率:次ThinkPHP3.2.3验证码显示、刷新、校验 ,具体如下:

显示验证码
首先在Home/Controller下创建一个公共控制器PublicController
<?php
namespace Home\Controller;
use Think\Controller;
use Think\Verify;
class PublicController extends Controller
{
/* 生成验证码 */
public function verify()
{
$config = [
'fontSize' => 19, // 验证码字体大小
'length' => 4, // 验证码位数
'imageH' => 34
];
$Verify = new Verify($config);
$Verify->entry();
}
/* 验证码校验 */
public function check_verify($code, $id = '')
{
$verify = new \Think\Verify();
$res = $verify->check($code, $id);
$this->ajaxReturn($res, 'json');
}
}
verify函数用于生成验证码,config是用来配置显示验证码的属性。该属性有哪些可配置项,可以查看Thinkphp/Library/Think/Verify.class.php文件,此处不再赘述。
check_verify函数用于校验验证码的正确性。模板post用户填写的验证码到该函数,返回$res==true验证通过false验证失败。
前台模板页建立index.html
<div class="">
<label for="j_verify" class="t">验证码:</label> <input id="j_verify"
name="j_verify" type="text" class="form-control x in">
<img id="verify_img" alt="点击更换" title="点击更换"
src="{:U('public/verify',array())}" class="m">
</div>
使用Thinkphp的U方法形成生成验证码的图片。
点击刷新验证码
从上面产生验证码的链接我们可以看出,域名/public/verify即可产生验证码。Thinkphp的验证码生成机制是,如若我们需要产生新的验证码,在该链接后加入一个变量值即可。
我们可以考虑实现public/verify/变量值的形式URL。
$("#verify_img").click(function() {
var verifyURL = "public/verify";
var time = new Date().getTime();
$("#verify_img").attr({
"src" : verifyURL + "/" + time
});
});
利用JS获取当前时间戳加入到URL之后即可。
到此我们即可实现验证码的点击刷新功能。具体表现形式,自己随意哈。
异步校验验证码
大家一定见过在某些网站,我们输入验证码的时候,输入的过程中文本框后面一直显示错误,直到我们输入争取的时候会先提示验证码正确的形式。下面代码就可以实现:
$("#j_verify").keyup(function() {
$.post("public/check_verify", {
code : $("#j_verify").val()
}, function(data) {
if (data == true) {
//验证码输入正确
} else {
//验证码输入错误
}
});
});
利用onekeyup。原理就不需要多讲了吧!
这样我们就可以实现在提交用户名密码之前先进行一次验证码校验,之后表单提交之后再进行一次校验,提升用户体验啦!
还没结束:
当我们采取以上形式实现验证码两次校验的时候,肯定会出现第一次异步校验成功,但是提交表单却提示验证码错误的情况!其实原因还是出在Thinkphp的Verify.class.php上:
以下是该类初始的config配置:
protected $config = array(
'seKey' => 'ThinkPHP.CN', // 验证码加密密钥
'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY', // 验证码字符集合
'expire' => 1800, // 验证码过期时间(s)
'useZh' => false, // 使用中文验证码
'zhSet' => '……此处不粘贴了,太多了!', // 中文验证码字符串
'useImgBg' => false, // 使用背景图片
'fontSize' => 25, // 验证码字体大小(px)
'useCurve' => false, // 是否画混淆曲线
'useNoise' => false, // 是否添加杂点
'imageH' => 0, // 验证码图片高度
'imageW' => 0, // 验证码图片宽度
'length' => 5, // 验证码位数
'fontttf' => '', // 验证码字体,不设置随机获取
'bg' => array(243, 251, 254), // 背景颜色
'reset' => true, // 验证成功后是否重置
);
请大家注意最后一个属性reset 表示的是验证成功后是否重置验证码。相信大家都明白了吧,我们进行第一次校验通过之后,其实该验证码已经失效了,只不过因为我们采取的是异步校验,页面并没有刷新,导致了第二次申请校验的时候和系统产生的已经是不相同的了。所以如果大家喜欢这种两次校验的风格,可以考虑将reset配置为false即可。
好了,基于Thinkphp3.2.3的验证码问题今天就总结到这了。只是大概说了一下实现方法,具体内容还请大家参考TP官方手册。如有错误之处,欢迎大家指出。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# thinkphp
# 验证码刷新
# 验证码
# thinkphp3.2
# ThinkPHP5.1验证码功能实现的示例代码
# ThinkPHP5&5.1实现验证码的生成、使用及点击刷新功能示例
# thinkphp5.1验证码及验证码验证功能的实现详解
# tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
# thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
# thinkPHP框架实现的短信接口验证码功能示例
# thinkPHP实现的验证码登录功能示例
# thinkPHP中验证码的简单实现方法
# thinkphp自带验证码全面解析
# Thinkphp极验滑动验证码实现步骤解析
# 的是
# 两次
# 表单
# 就可以
# 好了
# 还没
# 变量值
# 大家都
# 说了
# 如有
# 之处
# 见过
# 请大家
# 我们可以
# 欢迎大家
# 要多
# 可以看出
# 当我们
# 不需
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
WordPress 子目录安装中正确处理脚本路径的完整指南
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
Laravel如何使用Gate和Policy进行授权?(权限控制)
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
做企业网站制作流程,企业网站制作基本流程有哪些?
如何用花生壳三步快速搭建专属网站?
🚀拖拽式CMS建站能否实现高效与个性化并存?
如何续费美橙建站之星域名及服务?
Python面向对象测试方法_mock解析【教程】
JavaScript如何实现路由_前端路由原理是什么
微信小程序 wx.uploadFile无法上传解决办法
如何快速建站并高效导出源代码?
如何快速搭建个人网站并优化SEO?
JavaScript Ajax实现异步通信
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
如何快速使用云服务器搭建个人网站?
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
Linux后台任务运行方法_nohup与&使用技巧【技巧】
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】
如何在IIS管理器中快速创建并配置网站?
个人网站制作流程图片大全,个人网站如何注销?
如何为不同团队 ID 动态生成多个非值班状态按钮
Laravel如何使用Service Container和依赖注入?(代码示例)
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
Thinkphp 中 distinct 的用法解析
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
Java垃圾回收器的方法和原理总结
长沙做网站要多少钱,长沙国安网络怎么样?
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
如何快速搭建高效服务器建站系统?
如何在不使用负向后查找的情况下匹配特定条件前的换行符
java获取注册ip实例
Laravel如何升级到最新版本?(升级指南和步骤)
成都网站制作公司哪家好,四川省职工服务网是做什么用?
如何在宝塔面板创建新站点?
Linux系统命令中tree命令详解
Laravel怎么上传文件_Laravel图片上传及存储配置
java ZXing生成二维码及条码实例分享
java中使用zxing批量生成二维码立牌
如何在云服务器上快速搭建个人网站?
iOS发送验证码倒计时应用
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
Laravel API资源类怎么用_Laravel API Resource数据转换
如何在万网自助建站中设置域名及备案?
laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全

