ThinkPHP实现生成和校验验证码功能


Posted in PHP onApril 28, 2017

使用ThinkPHP实现生成/校验验证码功能,供大家参考,具体内容如下

首先了解父类Verity.class.php(ThinkPHP/Library/Think/Verity.class.php)中的一些函数

1:check() 校验验证码是否正确

2:entry()输出验证码并把验证码的值保存的session中

3:authcode() 加密验证码(此方法在check()方法中被调用)

控制器生成验证码代码:

//验证码
 function verifyImg(){

  //验证码配置
  $cfg = array(
   'imageH' => 30, // 验证码图片高度
   'imageW' => 100, // 验证码图片宽度
   'fontSize' => 15, // 验证码字体大小(px)
   'length' => 4, // 验证码位数
   'fontttf' => '4.ttf', // 验证码字体,不设置随机获取
  );

  //实例化Verify类 自动调用构造函数,把$cfg信息传给$config
  $verify = new Verify($cfg);
  $verify -> entry(); //输出验证码
 }

前台显示验证码

<!--分组/控制器/方法--> <img src="<{$smarty.const.__CONTROLLER__}>/verifyImg" onclick = "this.src='<{$smarty.const.__CONTROLLER__}>/verifyImg/'+Math.random()" alt="验证码" />

控制器校验验证码(以登陆为例)

//登陆
 function login(){
  
  //两个逻辑:展示,收集
  if (!empty($_POST)) {

   $verify = new Verify();

   //接收验证码
   $captcha = $_POST['captcha'];
   //check()方法校验验证码
   if ($verify->check($captcha)) {
    echo "正确";
   }else{
    echo "错误";
   }
  }

  //调用view视图
  $this->display();
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP一些有意思的小区别
Dec 06 PHP
PHP的加密方式及原理
Jun 14 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
Dec 11 PHP
php中autoload的用法总结
Nov 08 PHP
php+ajax实现无刷新分页的方法
Nov 04 PHP
smarty实现多级分类的方法
Dec 05 PHP
基于命令行执行带参数的php脚本并取得参数的方法
Jan 25 PHP
PHP中子类重载父类的方法【parent::方法名】
May 06 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
Feb 04 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
Jun 07 PHP
PHP PDOStatement::execute讲解
Jan 31 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
Dec 02 PHP
PHP后台微信支付和支付宝支付开发
Apr 28 #PHP
ThinkPHP中create()方法自动验证表单信息
Apr 28 #PHP
ThinkPHP实现简单登陆功能
Apr 28 #PHP
ThinkPHP实现分页功能
Apr 28 #PHP
ThinkPHP实现附件上传功能
Apr 27 #PHP
使用ThinkPHP生成缩略图及显示
Apr 27 #PHP
php实现头像上传预览功能
Apr 27 #PHP
You might like
高分R级DC动画剧《哈莉·奎茵》第二季正式预告首发
2020/04/09 欧美动漫
php缓存技术介绍
2006/11/25 PHP
smarty中先strip_tags过滤html标签后truncate截取文章运用
2010/10/25 PHP
那些年一起学习的PHP(二)
2012/03/21 PHP
Laravel 5框架学习之子视图和表单复用
2015/04/09 PHP
常用PHP封装分页工具类
2017/01/14 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
JS实现的点击表头排序功能示例
2017/03/27 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
JS如何实现动态添加的元素绑定事件
2019/11/12 Javascript
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
python开启多个子进程并行运行的方法
2015/04/18 Python
在Python程序中操作MySQL的基本方法
2015/07/29 Python
Python关于反射的实例代码分享
2020/02/20 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
意大利团购网站:Groupon意大利
2016/10/11 全球购物
去加拿大的旅行和假期:Canadian Affair
2016/10/25 全球购物
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
英国排名第一的冲浪店:Ann’s Cottage
2020/06/21 全球购物
法律专业自我鉴定
2013/10/03 职场文书
党校培训思想汇报
2013/12/30 职场文书
2015年结对帮扶工作总结
2015/05/04 职场文书
Python还能这么玩之用Python修改了班花的开机密码
2021/06/04 Python
OpenCV实现反阈值二值化
2021/11/17 Java/Android
德生TECSUN S-2000使用手册文字版
2022/05/10 无线电
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers