Think\Verify类可以支持验证码的生成和验证功能。

为了显示这个验证码功能,第一要有控制器,再就是有方法,然后是显示的页面。

一、最简单的方式生成验证码

(1)我们还是继续在那个控制器编写方法

这个方法显示这个验证码的页面

public function xianshi()
{$this->show();
}

public function shengcheng()
{//造验证码的对象$v = new \Think\Verify();//生成验证码$v->entry();
}

(2)显示验证码的页面,还是放在中,命名为

<img src="__CONTROLLER__/shengcheng" />

运行一下看下结果~~

(3)我们还可以给他设置大小,每刷新一次页面,验证码都会改变

只要给他个属性就可以了,例如

<img src="__CONTROLLER__/shengcheng" width="300" height="100" />

宽和高都变大

二、文本框输入验证码(让文本框输入的验证码和显示的验证码是否匹配)

(1)先要在显示页面做一个文本框,来显示用户看到的内容

<img src="__CONTROLLER__/shengcheng" width="300" height="100" />
<div>请输入验证码:<input type="text" name="yzm" /></div>

我们也要做一个提示的行:用来显示提示信息

<span id="tishi"></span>  

(2)用ajax来做这个事件

失去焦点时触发事件

<script type="text/javascript">$("#yzm").blur(function(){var yzm = $(this).val(); //找到这个文本框中的值$.ajax({url:"__ACTION__",  //发送给他自己data:{yzm:yzm},   //将文本框中的值传过去type:"POST",  //传输方式dataType:"TEXT", success: function(data){                  //返回成功后的操作}})})
</script>

(3)在控制器中显示xianshi方法中的判断验证码是不是正确

public function xianshi()
{if(empty($_POST)){$this->show();    //显示页面}else{//验证验证码是否正确,可以用Think\Verify类的check方法检测验证码的输入是否正确$yzm = $_POST["yzm"];   //接收传过来的文本框的值$v = new \Think\Verify();if($v->check($yzm))  //验证完是有返回值的,所以我们可以用if判断一下{$this->ajaxReturn("ok","eval");  //输入正确返回ok}else{$this->ajaxReturn("no","eval");    //输入错误返回no    }   }
}

(4)ajax中返回成功地方的书写

success: function(data){if(data.trim()=="ok"){//返回成功过就输出提示信息$("#tishi").html("验证通过!");  $("#tishi").css("color","green");}else{//否则就返回错误的提示信息$("#tishi").html("验证码输入错误!"); $("#tishi").css("color","red");   }
}

下面就是运行的实验了:

首先是输入正确的验证码,提示正确的信息

输入错误或是没有输入时,就会提示错误信息

三、如果一个页面有两个验证码

(1)这样显示的页面要有一个验证码显示的地方,里面的方法我们是shengcheng1

<img src="__CONTROLLER__/shengcheng1" width="300" height="100" />

(2)控制器的方法也要写个shengcheng1

public function shengcheng1()
{//造验证码的对象$v = new \Think\Verify();//生成验证码,标识是2$v->entry(2);
}  

注意:如果有两个验证码,就要进行标识,让他们知道是谁的验证码

这样第一个方法也要加标识

public function shengcheng()
{//造验证码的对象$v = new \Think\Verify();//生成验证码,标识是1$v->entry(1);
}

然后在check方法中写入一个标识,就是要验证哪一个的标识,这里我们要验证第二个吧

if($v->check($yzm,2))  //check的参数,一个是文本框中的值,第二个参数就是那个标识
{$this->ajaxReturn("ok","eval"); //输入正确返回ok
}
else
{$this->ajaxReturn("no","eval");   //输入错误返回no
}

看下结果,输入第二个验证码

四、验证码的变换

想要变换验证码的图片,其实就是重新请求那个生成验证码的方法就可以了

(1)先要把调换验证码的图片起个名字,如下

<img src="__CONTROLLER__/shengcheng1" width="300" height="100" id="img2" />

(2)然后就是给这个图片添加点击事件,修改属性就可以了

$("#img2").click(function(){//修改一些属性就可以了,修改src的属性$(this).attr("src","__CONTROLLER__/shengcheng1");
})

运行看下结果,点击一次就会变图片

注意:有时候浏览器不同也会有bug,所以我们要加一个东西,让它适应任何的浏览器,可以这样写

$("#img2").click(function(){var sj = Math.random();  //生成随机数var sz = sj.toFixed(2);  //取小数点后两位//修改一些属性就可以了,修改src的属性$(this).attr("src","__CONTROLLER__/shengcheng1/a"+sz);  //拼接上截取后的随机数
})

这样IE浏览器也是可以换图的了

五、其他的关于验证码的参数

这些参数都可以给验证码有些变换

注意:参数的设置有两种方法

一是实例化传入参数:

$config = array(    'fontSize'    =>    30,    // 验证码字体大小    'length'      =>    3,     // 验证码位数    'useNoise'    =>    false, // 关闭验证码杂点
);
$Verify = new \Think\Verify($config);
$Verify->entry();

二是动态设置:

$Verify = new \Think\Verify();
$Verify->fontSize = 30;
$Verify->length   = 3;
$Verify->useNoise = false;
$Verify->entry();

六、验证码是中文

注意:要是用中文的,要在一个文件夹中加入字体(这个文件夹默认是空的)

电脑自带的字体是在如图文件夹中

注意放置中文字体的路径:ThinkPHP/Library/Think/Verify/zhttfs/ 目录下面

加入字体后,可以设置出现中文的验证码了:

public function shengcheng1()
{//造验证码的对象$v = new \Think\Verify();$v->fontSize = 50;$v->length   = 2;//$v->fontttf = "6.ttf";   //使用定义好的字体$v->useZh = true;  //使用中文字体//生成验证码,标识是2$v->entry(2);}

转载于:https://www.cnblogs.com/du892294464/p/7146658.html

thinkphp验证码功能相关推荐

  1. 图形验证码校验php,ThinkPHP实现生成和校验验证码功能

    使用ThinkPHP实现生成/校验验证码功能,供大家参考,具体内容如下 首先了解父类Verity.class.php(ThinkPHP/Library/Think/Verity.class.php)中 ...

  2. thinkphp实现发送手机验证码功能!

    php实现发送手机验证码功能如下: //发送手机验证码public function sendPhoneCodeMessage(){ vendor('SendPhoneCode.SendCode',' ...

  3. ThInkPHP验证码不显示,解决方法汇总

    出现ThInkPHP验证码不显示的情况 官方提示如下:如果无法显示验证码,请检查: ① PHP是否已经安装GD库支持: ② 输出之前是否有任何的输出(尤其是UTF8的BOM头信息输出):(打开验证码文 ...

  4. ThinkPHP验证码类

    //ThinkPHP验证码类使用$config = array('fontSize' => 30, // 验证码字体大小'length' => 3, // 验证码位数'useNoise' ...

  5. html表单输入框添加验证码,织梦Dedecms为自定义表单添加验证码功能

    使用织梦Dedecms自定义表单的时候,即使你做了字段的验证,也很有可能被人刷很多垃圾的内容,更加安全的一个方法是为自定义表单添加上验证码功能.今天我就来为大家分享一下怎样给自定义表单添加验证码! 一 ...

  6. java生成验证码实例_Java生成验证码功能实例代码

    页面上输入验证码是比较常见的一个功能,实现起来也很简单.给大家写一个简单的生成验证码的示例程序,需要的朋友可以借鉴一下. 闲话少续,直接上代码.代码中的注释很详细. package com.SM_te ...

  7. tp中php验证码程序,thinkPHP 验证码生成与验证

    您现在的位置是:网站首页>>PHP>>thinkPHP thinkPHP 验证码生成与验证 发布时间:2018-12-06 13:34:11作者:wangjian浏览量:842 ...

  8. 验证码实现php 难点,php实现简单的验证码功能

    php实现简单的验证码功能<?php //简单的验证码 //随机数 //为什么要循环0-15之间的数呢? //因为要实现最简单的字母和数字混搭 //十六进制0-9 a-f //dechex -- ...

  9. vue 插件 滑块验证_VUE接入腾讯验证码功能(滑块验证)备忘

    最近在用VUE做个简单的用户系统,登录注册需要验证码,想找个那种拖动的,找geetest居然已经不面向小客户了(或者说只有收费套餐). 腾讯防水墙的验证码免费使用,有2000/小时的免费额度,对于小网 ...

最新文章

  1. python 复制dict_超全的Python 字典(Dictionary)介绍
  2. 由手机上网带来病毒引发的三大疑问?
  3. 02、体验Spark shell下RDD编程
  4. Nginx 反向代理解决跨域问题
  5. 【C/C++开发】【VS开发】win32位与x64位下各类型长度对比
  6. js 获取子节点个数
  7. python基于Flask构建Web服务,解决Flask数据请求中的跨域问题
  8. 线段树详解 二 ----(区间修改区间查询)
  9. auto CAD 常用快捷键指令
  10. artDialog | 经典的网页对话框组件
  11. Win10找不到gpedit.msc|找不到本地组策略编辑器的解决方法
  12. install index.php,安装好的织梦dedecms首页index.php自动跳转到install/index.php的问题
  13. 概率论得学习整理--番外3:二项式定理和 二项式系数
  14. PowerShell: 作为一个PowerShell菜鸟,如何快速入门?掌握这些就够了
  15. 自动写稿机器人下载,写稿机器人有哪些,写稿机器人软件下载
  16. 仿苹果手机_高价回收旧手机旧电脑最终怎么处理了?能不能卖?
  17. ubuntu Segmentation Fault错误原因
  18. 中文乱码字幕视频观看的免费网站
  19. Android电视清理系统应用,智能电视删除自带软件,这个方法最简单!
  20. Oracle查询语句及运用语句整理

热门文章

  1. FreeBSD设置IP地址,网关,DNS
  2. powerdesigner 同步mysql 报错_Win7下PowerDesigner连接mysql,反向工程,导出差异脚本,或直接同步...
  3. c++ primer 5th,习题11.33
  4. mysql有没有单机版?
  5. linux dns 攻击,DNSlog攻击技巧 | CN-SEC 中文网
  6. python爬虫之urllib库详解
  7. 一分钟带你看懂UML图
  8. C++四种类型强制转换——const_cast、static_cast、dynamic_cast、reinterpret_cast
  9. Hadoop IO 文件压缩 序列化
  10. Java NIO、NIO.2学习笔记