ThinkPHP验证码和分页实例教程


Posted in PHP onAugust 22, 2014

本文实例讲述了ThinkPHP常用的两个功能:验证码与分页。在ThinkPHP的项目开发中非常常见,具有很高的实用价值。完整实例分享给大家,供大家参考。具体如下:

一、验证码:

导入验证码类,在aoli\ThinkPHP\Lib\ORG\Util\Image.class.php里有验证码方法   

1.英文验证码:

buildImageVerify($length,$mode,$type,$width,$height,$verifyName)

参数如下:

length :验证码的长度,默认为 4 位数
mode :验证字符串的类型,默认为数字,其他支持类型有 0 字母 1 数字 2 大写字母 3 小写字母 4
中文 5 混合(去掉了容易混淆的字符 oOLl 和数字 01 )
type :验证码的图片类型,默认为 png
width :验证码的宽度,默认会自动根据验证码长度自动计算
height :验证码的高度,默认为 22
verifyName :验证码的 SESSION 记录名称,默认为 verify

2.中文验证码:

GBVerify ($length,$type,$width,$height,$fontface,$verifyName)

参数如下:

length :验证码的长度,默认为 4 位数
type :验证码的图片类型,默认为 png
width :验证码的宽度,默认会自动根据验证码长度自动计算
height :验证码的高度,默认为 50
fontface :使用的字体文件,使用完整文件名或者放到图像类所在的目录下面,默认使用的字体文件是 simhei.ttf (该文件可以从 window 的 Fonts 目录下面找到)
verifyName :验证码的 SESSION 记录名称,默认为 verify

3.如果无法显示验证码,请检查:

①.PHP 是否已经安装 GD 库支持; 
②.输出之前是否有任何的输出(尤其是 UTF8 的 BOM 头信息输出);
③.Image 类库是否正确导入;
④.如果是中文验证码检查是否有拷贝字体文件到类库所在目录;

4.action部分:

CommonAction.class.php页面代码如下:

<?php
class CommonAction extends Action{
  function verify(){    
    import('ORG.Util.Image');
    //英文验证码
    //Image::buildImageVerify(5,5,gif,90,30,'verify');
    //中文验证码
    Image::GBVerify();
  }  
  
}
?>

5.view模板部分:

模板index.html页面如下:

验证码:<input type="text" name="verify" /><img src="__APP__/common/verify" onclick="show(this)" /><br />
 <input type="submit" value="注册" />
</form>

<script type="text/javascript">
  function show(obj){
    obj.src="__APP__/common/verify/random/"+Math.random();    
  }
</script>

6.控制器:

控制器UserAction.class.php如下:

//验证码验证
if($_SESSION['verify']!=md5($_POST['verify'])){
  $this->error('验证码不正确');   
}

二、分页:

1.导入分页类,在aoli\ThinkPHP\Lib\ORG\Util\Page.class.php里有验证码方法  

2.action部分:

UserAction.class.php页面如下:

function index(){
  import('ORG.Util.Page');//引入分布类
  $user=M('user');
  $count=$user->count();
  $page=new Page($count,3);//一页显示5条
  $page->setConfig('theme','<div style="font-weight:bold;">总共:%totalRow%%header% %nowPage%/%totalPage%页 %first% %upPage% %prePage% %linkPage% %nextPage% %downPage% %end%</div>');
  $show=$page->show();
  $list=$user->field(array('id','username','createip'))->order('id desc')->limit($page->firstRow.','.$page->listRows)->select();
  $this->assign('alist',$list);
  $this->assign('page',$show);
  $this->display();
}

3.view模板部分:

模板页index.html页面如下:

<volist name="alist" id="vo">
 <li><span>ID:</span>{$vo['id']}<span>用户名:</span>{$vo['username']}<span>注册ip:</span>{$vo['createip']}<a href="__URL__/del/id/{$vo['id']}">删除</a>  <a href="__URL__/edit/id/{$vo['id']}">编辑</a></li>
</volist>
{$page}

感兴趣的读者可以调试运行一下本文ThinkPHP验证码与分页实例,相信会有新的收获。

PHP 相关文章推荐
基于PHP+MySQL的聊天室设计
Oct 09 PHP
[原创]PHP中通过ADODB库实现调用Access数据库之修正版本
Dec 31 PHP
PHP APC的安装与使用详解
Jun 13 PHP
更改localhost为其他名字的方法
Feb 10 PHP
php绘制圆形的方法
Jan 24 PHP
php数组使用规则分析
Feb 27 PHP
基于PHP实现简单的随机抽奖小程序
Jan 05 PHP
YII2.0之Activeform表单组件用法实例
Jan 09 PHP
PHP+Mysql无刷新问答评论系统(源码)
Dec 20 PHP
PHP实现浏览器格式化显示XML的方法示例
Jan 22 PHP
PHP中的self关键字详解
Jun 23 PHP
php文件后缀不强制为.php的实操方法
Sep 18 PHP
ThinkPHP文件上传实例教程
Aug 22 #PHP
ThinkPHP中ajax使用实例教程
Aug 22 #PHP
ThinkPHP中的常用查询语言汇总
Aug 22 #PHP
ThinkPHP多语言支持与多模板支持概述
Aug 22 #PHP
ThinkPHP中的三大自动简介
Aug 22 #PHP
PHP实现克鲁斯卡尔算法实例解析
Aug 22 #PHP
php中限制ip段访问、禁止ip提交表单的代码分享
Aug 22 #PHP
You might like
Yii2中添加全局函数的方法分析
2017/05/04 PHP
php实现mysql连接池效果实现代码
2018/01/25 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
Laravel 自动生成验证的实例讲解:login / logout
2019/10/14 PHP
tp5递归 无限级分类详解
2019/10/18 PHP
Javascript中valueOf与toString区别浅析
2013/03/19 Javascript
jquery实现增加删除行的方法
2015/02/03 Javascript
Javascript中的高阶函数介绍
2015/03/15 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
javascript获取指定区间范围随机数的方法
2017/09/08 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
vue中设置、获取、删除cookie的方法
2018/09/21 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
2018/12/03 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
2019/08/28 Javascript
Javascript摸拟自由落体与上抛运动原理与实现方法详解
2020/04/08 Javascript
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
Flask框架的学习指南之制作简单blog系统
2016/11/20 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
scrapy爬虫完整实例
2018/01/25 Python
Python之批量创建文件的实例讲解
2018/05/10 Python
python判断输入日期为第几天的实例
2018/11/13 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
python如何实现异步调用函数执行
2019/07/08 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
2020/01/15 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
python 追踪except信息方式
2020/04/25 Python
美国时装品牌:Nautica(诺帝卡)
2016/08/28 全球购物
简单的辞职信范文
2014/01/18 职场文书
电气工程及其自动化专业毕业生自荐信
2014/06/21 职场文书
超市七夕促销活动方案
2014/08/28 职场文书
文言文辞职信
2015/02/28 职场文书
小学安全工作总结2015
2015/05/18 职场文书
初中体育教学随笔
2015/08/15 职场文书
比赛口号霸气押韵
2015/12/24 职场文书
详解GaussDB for MySQL性能优化
2021/05/18 MySQL
Python激活Anaconda环境变量的详细步骤
2021/06/08 Python