ThinkPHP 验证码详解及实例
发布:smiling 来源: PHP粉丝网 添加日期:2014-04-21 14:10:53 浏览: 评论:0
ThinkPHP 内置了验证码的支持,可以直接使用,要使用验证码,需要导入扩展类库中的 ORG.Util.Image 类库和 ORG.Util.String 类库.
验证码方法
我们通过在在模块类中增加一个 verify 方法来用于显示验证码,最简单的例子:
- Public function verify(){
- // 导入Image类库
- import("ORG.Util.Image");
- Image::buildImageVerify();
- }
import 方法是 ThinkPHP 内置的类库和文件导入方法,上例导入的文件为 ThinkPHP 系统目录下 Lib/ORG/Util/Image.class.php 文件,如果已经将 Image 类库拷贝到了当前项目下,如 Lib/ORG 下,则可以以:
import("@.Util.Image");
方式导入,具体可参见《ThinkPHP import 类库导入》.
import 方法是 ThinkPHP 内置的类库和文件导入方法,上例导入的文件为 ThinkPHP 系统目录下 Lib/ORG/Util/Image.class.php 文件.
访问验证码
可以直接在浏览器里访问该验证码方法以确定验证码是否能正常显示:
http://127.0.0.1/index.php/Public/verify
表单中使用验证码
在表单页面中使用验证码,是以 html img标签 来调用:
- <input type="text" name="verify">
- <img id="verifyImg" src="__URL__-verify" onClick="changeVerify()" title="点击刷新验证码" />
src 属性值即为验证码方法访问地址,视实际情况不同而不同.
验证码刷新
当点击验证码图片时,触发 JavaScript changeVerify() 函数重新读取验证码,从而实现验证码刷新,该函数参考如下:
- <script language="JavaScript">
- function changeVerify(){
- var timenow = new Date().getTime();
- document.getElementByIdx_x('verifyImg').src='__URL__/verify/'+timenow;
- }
- </script>
验证码验证
在调用验证码 verify 的时候,buildImageVerify 会记录本次验证码的 MD5 信息,在表单验证操作里,以如下方法来检查验证码是否正确:
- if($_SESSION['verify'] != md5($_POST['verify']))
- {
- $this->error('验证码错误!');
- }
其中 $_SESSION['verify'] 中的 verify 名称为 buildImageVerify 方法默认 SESSION 注册名称,具体见 buildImageVerify 语法.
上面例子演示了最简单的 ThinkPHP 验证码的使用方法,上面的例子验证码是 4 位数字.
验证码不显示原因
如下发现无法显示验证码,可能的原因如下:
PHP 是否已经安装 GD 库支持,了解更多 GD 库信息参见《PHP 图像处理》GD库部分.
输出之前是否有任何的输出(尤其是 UTF8 的 BOM 头信息输出).
Image 类库是否正确导入,如果是表单页面,请查看是否正确调用了验证码显示方法.
Tags: ThinkPHP 验证码 实例
相关文章
- ·ThinkPHP中自定义错误页面和提示页面 (2013-11-15)
- ·ThinkPHP中Ajax返回(2013-11-15)
- ·ThinkPHP中处理表单中注意(2013-11-15)
- ·ThinkPHP中I(),U(),$this->post()等函数(2013-11-15)
- ·ThinkPHP中公共函数路径和配置项路径的映射(2013-11-15)
- ·ThinkPHP中公共配置文件和各自项目中的配置文件组合(2013-11-15)
- ·ThinkPHP在控制器里的javascript代码不能执行解决方法(2013-11-29)
- ·ThinkPHP3.0略缩图不能保存到子目录(2013-12-03)
- ·thinkphp的循环结构(2014-01-10)
- ·thinkphp特殊标签使用(2014-01-10)
- ·thinkphp模板输出汇总(2014-01-10)
- ·thinkphp模板的赋值与替换(2014-01-10)
- ·thinkphp连贯操作(2014-01-10)
- ·thinkphp区间查询、统计查询、SQL直接查询(2014-01-10)
- ·thinkphp的普通查询与表达式查询(2014-01-10)
- ·RBAC类在ThinkPHP中的四种使用方法(2014-01-10)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)