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 验证码制作(网树注释思想)
Jul 20 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
Jun 06 PHP
浅析51个PHP处理字符串的函数
Aug 02 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
Sep 26 PHP
PHP代码优化之成员变量获取速度对比
Feb 28 PHP
yii框架配置默认controller和action示例
Apr 30 PHP
php上传图片之时间戳命名(保存路径)
Aug 15 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
利用php-cli和任务计划实现订单同步功能的方法
May 03 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 PHP
php layui实现前端多图上传实例
Jul 30 PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
Jan 04 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
关于PHP中的Class的几点个人看法
2006/10/09 PHP
PHP+JS+rsa数据加密传输实现代码
2011/03/23 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
2013/07/01 PHP
分享常见的几种页面静态化的方法
2015/01/08 PHP
php实现购物车功能(上)
2020/07/23 PHP
php连接mysql数据库
2017/03/21 PHP
PHP高效获取远程图片尺寸和大小的实现方法
2017/10/20 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
Code:findPosX 和 findPosY
2006/12/20 Javascript
利用javascript中的call实现继承
2007/01/22 Javascript
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
js创建对象的几种常用方式小结(推荐)
2010/10/24 Javascript
JavaScript制作的可折叠弹出式菜单示例
2014/04/04 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
2015/09/04 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
2017/03/29 Javascript
Vue中自定义全局组件的实现方法
2017/12/08 Javascript
JavaScript 下载svg图片为png格式
2018/06/21 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
js实现网页同时进行多个倒计时功能
2019/02/25 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
简单了解Javscript中兄弟ifream的方法调用
2019/06/17 Javascript
js判断浏览器的环境(pc端,移动端,还是微信浏览器)
2020/12/24 Javascript
[01:00]一分钟回顾2018DOTA2亚洲邀请赛现场活动
2018/04/07 DOTA
利用Python2下载单张图片与爬取网页图片实例代码
2017/12/25 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
通过Python 接口使用OpenCV的方法
2018/04/02 Python
python os.listdir按文件存取时间顺序列出目录的实例
2018/10/21 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
Python OrderedDict字典排序方法详解
2020/05/21 Python
Keras自定义IOU方式
2020/06/10 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
HTML5拖放API实现拖放排序的实例代码
2017/05/11 HTML / CSS