ThinkPHP简单的验证码实现
ThinkPHP简单的验证码实现
写一个最简单的TP验证码。
写Controller
首先在Controller/IndexController.class.php(简称Index)文件中编辑:
<?php
namespace Home\Controller;
use Think\Controller;
use Think\Verify;//这个类一定记得引用
class IndexController extends Controller {
public function index(){
$this->redirect('login');//重定向至login方法
} /*验证码*/
public function verify(){
$verify=new Verify();//新建一个验证码
$verify->entry();//输出验证码
} /*登陆*/
public function login(){
$this->display();//调用对应模板中的login.html
} /*登陆验证*/
public function login_do(){
$code=I('code');
$verify=new Verify();
if($verify->check($code)){
$this->success("验证成功");
}else{
$this->error("验证码错误");
}
}
}
写html
接下来要去新建一个表单,用于显示验证码并提供一个输入框,输入验证。
如果表单先不新建,现在就去看验证码的效果也是可以的。在浏览器访问:
http://localhost:8088/TP/Home/Index/verif就可以了。
上面操作是在Controller文件夹里面的index控制器进行的。我们去同级文件夹View里面新建一个文件夹叫做index进入index新建login.html
该html文件的命名与控制器文件中的login方法一直,在方法调用
$this->display();//调用对应模板中的login.html
即可显示login.html
文件中添加如下表单。
<form action="__URL__/login_do" method="post">
<input type="text" placeholder="请输入验证码" name="code" required>
<img src="{:U('verify')}" alt="" onclick="this.src='{:U('verify')}?'+Math.random()" title="看不清换一张">
<button>登陆</button>
</form>
访问测试
访问http://localhost:8088/TP/Home/Index/login即可看到如下效果。

这个验证码是默认的,以上编写显示过程也是相对比较简单的。
验证码图形自定义
我们接下来可以在此基础之上自定义一下。
修改控制器文件:
/*验证码*/
public function verify(){
$config=array(
'expire'=> 60, //验证码的有效期(秒)
'useImgBg'=>false , //是否使用背景图片 默认为false
'fontSize'=>35 , //验证码字体大小(像素) 默认为25
'useCurve'=>true , //是否使用混淆曲线 默认为true
'useNoise'=>true , //是否添加杂点 默认为true
//'imageW'=>100 , //验证码宽度 设置为0为自动计算
//'imageH'=>30 , //验证码高度 设置为0为自动计算
'length'=>4 , //验证码位数
//'fontttf'=> , //指定验证码字体 默认为随机获取
//'useZh'=> , //是否使用中文验证码
//'bg'=> , //验证码背景颜色 rgb数组设置,例如 array(243, 251, 254)
//'seKey'=> , //验证码的加密密钥
//'codeSet'=> , //验证码字符集合 3.2.1 新增
//'zhSet'=> , //验证码字符集合(中文) 3.2.1 新增
); $verify=new Verify($config);//新建一个验证码
$verify->entry();//输出验证码
}
这样则可以自定义验证码。
ThinkPHP简单的验证码实现的更多相关文章
- 在IIS下部署Thinkphp项目,验证码不能显示的解决办法
由于公司租用的是虚拟空间,而且用的是IIS服务器,所以部署PHP的时候就出现很多问题:比如昨天就碰到这个问题:在IIS下部署Thinkphp项目,验证码不能显示 这是生成验证码的方法: // 制作专门 ...
- 学习笔记:利用GDI+生成简单的验证码图片
学习笔记:利用GDI+生成简单的验证码图片 /// <summary> /// 单击图片时切换图片 /// </summary> /// <param name=&quo ...
- python 简单图像识别--验证码
python 简单图像识别--验证码 记录下,准备工作安装过程很是麻烦. 首先库:pytesseract,image,tesseract,PIL windows安装PIL,直接exe进行安装更方便( ...
- Flask学习之旅--用 Python + Flask 制作一个简单的验证码系统
一.写在前面 现在无论大大小小的网站,基本上都会使用验证码,登录的时候要验证,下载的时候要验证,而使用的验证码也从那些简简单单的字符图形验证码“进化”成了需要进行图文识别的验证码.需要拖动滑块的滑动验 ...
- Python 常用模块系列学习(1)--random模块常用function总结--简单应用--验证码生成
random模块--random是一个生成器 首先: import random #导入模块 print (help(random)) #打印random模块帮助信息 常用function ...
- python简单处理验证码,三分钟,不能再多了
序言 大家好鸭, 又是我小熊猫啦 我们在做采集数据的时候,过快或者访问频繁,或者一访问就给弹出验证码,然后就蚌珠了~今天就给大家来一个简单处理验证码的方法 环境模块 Python和pycharm如果还 ...
- ThinkPHP框架之验证码
Think\Verify类可以支持验证码的生成和验证功能. 下面是最简单的方式生成验证码: $Verify = new \Think\Verify(); $Verify->entry(); 上面 ...
- ThinkPhp框架:验证码功能
Think\Verify类可以支持验证码的生成和验证功能. 为了显示这个验证码功能,第一要有控制器,再就是有方法,然后是显示的页面. 一.最简单的方式生成验证码 (1)我们还是继续在那个控制器编写方法 ...
- ThinkPHP中处理验证码的问题
Think\Verify类可以支持验证码的生成和验证功能. 生成验证码的最简单的代码如下: public function verify(){ $Verify = new \Think\ ...
随机推荐
- 1021. Deepest Root (25) -并查集判树 -BFS求深度
题目如下: A graph which is connected and acyclic can be considered a tree. The height of the tree depend ...
- 从JDK源码角度看java并发的原子性如何保证
JDK源码中,在研究AQS框架时,会发现很多地方都使用了CAS操作,在并发实现中CAS操作必须具备原子性,而且是硬件级别的原子性,java被隔离在硬件之上,明显力不从心,这时为了能直接操作操作系统层面 ...
- Ubuntu安装JDK与环境变量配置
Ubuntu安装JDK与环境变量配置 一.getconf LONG_BIT 查看系统位数,并下载相应的jdk.我的系统是32位的,所以下载的jdk是:jdk-8u77-linux-i586.gz.并且 ...
- 【一天一道LeetCode】#18. 4Sum
一天一道LeetCode (一)题目 Given an array S of n integers, are there elements a, b, c, and d in S such that ...
- Leetcode_49_Anagrams
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42744709 Given an array of stri ...
- 一个简单的多机器人编队算法实现--PID
用PID进行领航跟随法机器人编队控制 课题2:多机器人编队控制研究对象:两轮差动的移动机器人或车式移动机器人研究内容:平坦地形,编队的保持和避障,以及避障和队形切换算法等:起伏地形,还要考虑地形情况对 ...
- gcc学习(一)[第二版]
gcc简介 1. gcc是GNU Compiler Collection的缩写.最初是作为C语言的编译器(GNU C Compiler),作者为Richard Stallman,是GNU项目的奠基者 ...
- OC中的枚举类型
背景 一直对OC中的位移操作枚举不太理解,查找到两篇介绍OC中枚举的文章,觉得很不错. 什么是位移操作枚举呢? typedef NS_OPTIONS(NSUInteger, UIViewAutores ...
- C#中任意类型数据转成JSON格式
/// <summary> /// List转成json /// </summary> /// <typeparam name="T&quo ...
- 认识Zygote
概述 在java中不同的虚拟机实例会为不同的应用分配不同内存,为了使Android系统尽快启动,使用了Zygote来预加载核心类库和一些加载时间长的类(超过1250ms),让Dalvik虚拟机共享代码 ...