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\ ...
随机推荐
- 根据CSS的class选择DOM
// 网上参考的,自己修改了一部分 // 代码如下,纯JS,要求浏览器支持 getElementsByClassName 方法 <script type="text/javascrip ...
- ffmpeg转码器移植VC的工程:ffmpeg for MFC
本文介绍一个自己做的FFMPEG移植到VC下的开源工程:ffmpeg for MFC.本工程将ffmpeg工程中的ffmpeg转码器(ffmpeg.c)移植到了VC环境下.并且使用MFC做了一套简单的 ...
- C++为什么要设计友元函数和友元类
1. 首先要提一下java,比如java定义一个类1.class,会生成字节码.java有反射机制,可以找到类对象,直接修改类的私有属性.逐渐反射机制成为了一种标准,sun做成标准,JDK的API函数 ...
- EBS DBA指南笔记(二)
第三章 监控和诊断 本章涵盖以下几个主题:监测的方法,数据库的监测,apache的监测,forms的监测,并发管理器的监测,服务器的监测,网络的监测,其它的一些监测和诊断方法. 1.监测的方法:主 ...
- android开发技巧——仿新版QQ锁屏下弹窗
新版的qq,可以在锁屏下弹窗显示qq消息,正好目前在做的项目也需要这一功能.经过各种试验和资料查找,终于实现,过程不难,但是却有一些地方需要注意. 下面是实现过程. 1.使用Activity,而不是V ...
- DB 查询分析器 方便地创建DB2自定义函数
DB 查询分析器 方便地创建DB2自定义函数 马根峰 (广东联合电子服务股份有限公司, 广州 510300) 摘要 ...
- 【leetcode76】Intersection of Two Arrays II
题目描述: 给定两个数组求他们的公共部分,输出形式是数组,相同的元素累计计数 例如: nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2]. 原文描述: G ...
- Linux管理日记(三)
23. 时间同步 同步时间可以使用 root 执行如下命令完成: rdate -s time.nist.gov 如果需要自动同步,可以采用crontab自动调度,每小时执行一次: 编辑 cronta ...
- FFMPEG结构体分析:AVFrame
注:写了一系列的结构体的分析的文章,在这里列一个列表: FFMPEG结构体分析:AVFrameFFMPEG结构体分析:AVFormatContextFFMPEG结构体分析:AVCodecContext ...
- SpriteBuilder中同父节点的显示顺序
如下图: 到目前为止,GameScene依赖于节点在SpriteBuilder中的顺序去决定其绘制的顺序. level content(_levelNode)被首先绘制,然后GameMenuLayer ...