ThinkPhp框架:验证码功能

一.单个验证码

1.依旧可以沿用上传功能所新建的控制器TestController.class.php

2.创建操作方法

namespace Home\Controller;
use Think\Controller;
class TestController extends Controller {
    public function yanzheng(){
		$this->show();//显示模版页面
	}

}
 

3.在Home/View/Test下新建验证的模版页 yanzheng.html 使用ajax来验证

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script src="__ROOT__/Public/js/jquery-3.2.0.min.js"></script>
</head>

<body>
<h1>验证码</h1>
<img src="__CONTROLLER__/yzm" id="img"/><input type="test" name="yzm" id="txt"/><input type="submit" id="btn" value="验证"/>
</body>
<script type="text/javascript">//失去焦点时触发事件
$("#btn").click(function(){
	var yzm = $("#txt").val();//取到用户输入的值
	$.ajax({
		url:"__CONTROLLER__/yz",
		data:{yzm:yzm},
		type:"POST",
		dataType:"TEXT",
		success:function(data){
			if(data.trim()=="ok"){
				alert("成功");
			}else{
				alert("失败");
			}
		}

	});
})

$("#img").click(function(){
	var sjs = Math.floor(Math.random() *100);
	$(this).attr("src","__CONTROLLER__/yzm/code/"+sjs);
})
</script>
</html>

4.建一个操作方法yzm用来生成验证码 并且 让验证按钮指向一个操作方法,新建一个yz操作方法

<?php
namespace Home\Controller;
use Think\Controller;
class TestController extends Controller {
      public function yanzheng(){
		$this->show();//显示模版页面
	}
	public function yzm(){
		$v = new \Think\Verify();//造对象
		//$v->useImgBg = true;//是否使用背景图片 默认为false
		//$v->fontSize="30";//验证码字体大小(像素) 默认为25
		//$v->useCurve=false;//是否使用混淆曲线 默认为true
		//$v->useNoise=false;//是否添加杂点 默认为true
		//$v->length="4";//验证码位数
		$v->useZh = true;//中文验证码
		$v->fontttf="STKAITI.TTF";
		$v->entry();//生成验证码
	}
	public function yz(){
		$yzm = $_POST["yzm"];
		$v = new \Think\Verify();
		if($v->check($yzm)){//验证
			$this->ajaxReturn("ok","eval");
		}else{
			$this->ajaxReturn("no","eval");
		}
	}          

}

实现的效果如下:

输入文字后点击验证:

二.两个验证码

1.给模版加一个img标签

<body>
<h1>验证码</h1>
<img src="__CONTROLLER__/yzm" id="img"/><input type="test" name="yzm" id="txt"/><input type="submit" id="btn" value="验证"/>
<img src="__CONTROLLER__/yzm2" id="img2"/>
</body>

2.控制器的方法也要写个yzm方法,叫做yzm2,如果有两个验证码,entry就要进行标识,entry(1)entry( 2)

public function yanzheng(){
		$this->show();//显示模版页面
	}
	public function yzm(){
		$v = new \Think\Verify();//造对象
		//$v->useImgBg = true;//是否使用背景图片 默认为false
		//$v->fontSize="30";//验证码字体大小(像素) 默认为25
		//$v->useCurve=false;//是否使用混淆曲线 默认为true
		//$v->useNoise=false;//是否添加杂点 默认为true
		//$v->length="4";//验证码位数
		$v->useZh = true;//中文验证码
		$v->fontttf="STKAITI.TTF";
		$v->entry(1);//生成验证码
	}
	public function yz(){
		$yzm = $_POST["yzm"];
		$v = new \Think\Verify();
		if($v->check($yzm,1)){//验证
			$this->ajaxReturn("ok","eval");
		}else{
			$this->ajaxReturn("no","eval");
		}
	}
	public function yzm2(){
		$v = new \Think\Verify();
		$v->entry(2);//生成验证码
	}

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

public function yz(){
		$yzm = $_POST["yzm"];
		$v = new \Think\Verify();
		if($v->check($yzm,1)){//验证
			$this->ajaxReturn("ok","eval");
		}else{
			$this->ajaxReturn("no","eval");
		}
	}

显示的结果:

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

$("#img").click(function(){
	var sjs = Math.floor(Math.random() *100);//生成随机数
	$(this).attr("src","__CONTROLLER__/yzm/code/"+sjs);//拼接上截取后的随机数
})

 三.验证码参数

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

一是实例化传入参数:

$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();

强调一下中文验证码的方法1.本身框架里没有字体参数,所以从C盘找到字体参数

2.选取ttf格式的字体参数复制到thinkphp\ThinkPHP\Library\Think\Verify\zhttfs文件夹下

3.代码中调用中文验证码参数

public function yzm(){
      $v = new \Think\Verify();//造对象
      $v->useZh = true;//中文验证码
      $v->fontttf="STKAITI.TTF";
      $v->entry(1);//生成验证码
}

时间: 2024-08-06 16:34:58

ThinkPhp框架:验证码功能的相关文章

阿里大于验证码发送 (ThinkPhp框架)

1.登录平台 阿里大于 2.登陆之后我们可以看到资费,使用场景等,在进入正题之前我们需要一些准备工作,首先我们先了解下短信的请求参数,在这里我们需要注意的是sms_param这个参数,在接下来我们申请短信模板的时候会用到 3.相应参数,对待返回值我们记住最基本的true or false 即可 4.了解完公共参数,接下来我们进入正题,首先我们得配置短信签名和配置短信模板,短信签名出现在短信开头,注意短信模板,这里将用到上文提示的sms_param参数 5.同时,在其网站上下载好SDK,下图展示的

&lt;转&gt;用thinkPHP实现验证码的功能

许多系统的登录都有验证码,而如果使用thinkPHP框架搭建网站的话,验证码的生成和验证就比较容易了 1.生成验证码 thinkPHP有对应生成验证码的方法 要使用验证码,需要导入扩展类库中的ORG.Util.Image类库和ORG.Util.String类库.我们通过在在模块类中增加一个verify方法来用于显示验证码: Public function verify(){ import('ORG.Util.Image'); Image::buildImageVerify(); } 2.验证验证

制作类似ThinkPHP框架中的PATHINFO模式功能(二)

距离上一次发布的<制作类似ThinkPHP框架中的PATHINFO模式功能>(文章地址:http://www.cnblogs.com/phpstudy2015-6/p/6242700.html)已经过去好多天了,今晚就将剩下的一些东西扫尾吧. 上一篇文章已经实现了PATHINFO模式的URL,即我们访问MVC模式搭建的站点时,只需要在域名后面加上(/module/controller/action)即可,很智能化.并且通过new Object时的自动触发函数实现类文件的自动载入,因此只要我们搭

用thinkPHP实现验证码的功能

许多系统的登录都有验证码,而如果使用thinkPHP框架搭建网站的话,验证码的生成和验证就比较容易了 1.生成验证码 thinkPHP有对应生成验证码的方法 要使用验证码,需要导入扩展类库中的ORG.Util.Image类库和ORG.Util.String类库.我们通过在在模块类中增加一个verify方法来用于显示验证码: Public function verify(){ import('ORG.Util.Image'); Image::buildImageVerify(); } 2.验证验证

thinkphp验证码功能

Think\Verify类可以支持验证码的生成和验证功能. 为了显示这个验证码功能,第一要有控制器,再就是有方法,然后是显示的页面. 一.最简单的方式生成验证码 (1)我们还是继续在那个控制器编写方法 这个方法显示这个验证码的页面 public function xianshi() { $this->show(); } public function shengcheng() { //造验证码的对象 $v = new \Think\Verify(); //生成验证码 $v->entry();

采用thinkphp框架实现添加管理员功能

最近由于忙于期中和期末考试没有写新的随笔了,另外内心也在纠结要不要考研,直到昨天终于痛下决心,才突然间觉得豁然开朗. 由于做老师留的课程设计作业采用thinkPHP框架频繁,最近的几篇随笔将都从thinkPHP框架的使用上着笔,好了,废话不多说,下面是干货. 这篇文章将围绕采用thinkPHP框架   向数据库中添加数据   和   在网页中显示   这两项功能进行展示. 目的:在add页添加数据后在lists页进行显示(注意:由于thinkPHP框架已经将list字段占用,因此在文件命名时不得

【ThinkPHP框架学习 】(1) --- thinkphp 3.2.3 验证码验证使用教程分享

框架版本:ThinkPHP框架     thinkphp 3.2.3 生成验证码 下面是最简单的方式生成验证码: $Verify = new \Think\Verify(); $Verify->entry(); 1.验证码调用与验证码配置参数,如下图:控制器处代码 2.模板处调用验证码代码如下图: 3.在admin/Common/function.php下:   在后台共用函数文件处  加入下面的验证码验证函数代码    验证函数 4.用户输入了验证码   传入到控制器验证代码:验证代码 5.小

ThinkPHP框架快速开发网站

使用ThinkPHP框架快速搭建网站 这一周一直忙于做实验室的网站,基本功能算是完成了.比较有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.如果对于同样是Web方面新手的你有一丝丝帮助,那就更好了挖. 以前用PHP做过一个很蹩脚的网站,为什么这么说呢,因为写的全是死代码.做完以后觉得实在是累,前端要div+css,js 后端要php,mysql,这么多东西要弄,十分头疼.所以,在接到做网站的任务后,我第一时间想到一定要使用开发框架去做,绝不能跟以前一样那么累了. 我选择的是PHP

使用ThinkPHP框架高速开发站点(多图)

使用ThinkPHP框架高速搭建站点 这一周一直忙于做实验室的站点,基本功能算是完毕了.比較有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.假设对于相同是Web方面新手的你有一丝丝帮助,那就更好了挖. 曾经用PHP做过一个非常蹩脚的站点,为什么这么说呢,由于写的全是死代码.做完以后认为实在是累,前端要div+css,js 后端要php,mysql,这么多东西要弄,十分头疼.所以,在接到做站点的任务后,我第一时间想到一定要使用开发框架去做,绝不能跟曾经一样那么累了. 我选择的是PH

ThinkPHP框架知识

php框架 一.真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格不一样) 项目稳定的运行阶段 项目停止运行(旧项目的人员已经全部离职,新人开发新项目) 二.问题: 1. 多人开发项目,分工不合理,(html   php   mysql) 2. 代码风格不一样,后期维护十分困难 3. 项目生命周期十分短,项目生命没有延续性,造成资源浪费.人员浪费 4. 项目不能很