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\ ...
随机推荐
- ROS_Kinetic_16 ubuntu中安装使用Matlab和ROS
ROS_Kinetic_16 ubuntu(16.04)中安装使用Matlab(2015b)和ROS(kinetic) 参考网址:http://cn.mathworks.com/hardware-su ...
- JAVA内部类_2
(d)匿名内部类 如果只创建这个类的第一个对象,就无需命名. 由于构造器的名字必须与类名相同,而匿名类没有类名,所以匿名类没有构造器. 取而代之的是将构造器参数传递给超类构造器. 在内部类实现接口的时 ...
- HTML5 预加载
原文地址: HTML5 Link Prefetching 原文日期: 2010年07月07日 翻译日期: 2013年08月13日 浏览器厂商和开发者之间共同努力的一个方向就是让网站更快.现在已有很多广 ...
- PO标准form的一点疑问
最近在修改采购订单form的时候,发现采购订单form往数据库中插数据的地方找不到,程序太多.我们又需要根据界面上的item的值在订单界面数据生成数据库数据时插值时,只能是想其他办法,一种是在on-i ...
- Android Studio集成Genymotion
Android Studio集成Genymotion比在Eclipse中集成简单多了.主要以下几个步骤: 1.官网先下载Genymotion:http://www.genymotion.com/,下载 ...
- 手把手教你打造一个心电图效果View Android自定义View
大家好,看我像不像蘑菇-因为我在学校呆的发霉了. 思而不学则殆 丽丽说得对,我有奇怪的疑问,大都是思而不学造成的,在我书读不够的情况下想太多,大多等于白想,所以革命没成功,同志仍需努力. 好了废话不说 ...
- javascript语法之声明变量
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ListView中ConvertView和ViewHolder
1.概述 ListView是Android中非常常见的控件通过Adapter架起数据与界面显示的桥梁,MVC思想在其中得到了很好地体现: M:model 数据模型 添加到ListView中显示的 ...
- AngularJS进阶(三十七)IE浏览器兼容性后续
IE浏览器兼容性后续 前言 继续尝试解决IE浏览器兼容性问题,结局方案为更换jquery.angularjs.IE的版本. 1.首先尝试更换jquery版本为1.7.2 jquery-1.9.1.js ...
- [Ext.Net]动态生成控件(二)--js动态添加文本框
转自:http://www.ext.net.cn/forum.php?mod=viewthread&tid=11931 点击一个按钮就出现一行控件,点击删除控件就可将一行控件删除,这是不是你一 ...