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实现小型站点广告管理(修正版)
Oct 09 PHP
php 调用远程url的六种方法小结
Nov 02 PHP
网站用php实现paypal整合方法
Nov 28 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
Apr 13 PHP
php中ob函数缓冲机制深入理解
Aug 03 PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 PHP
基于win2003虚拟机中apache服务器的访问
Aug 01 PHP
PHP格式化显示时间date()函数代码
Oct 03 PHP
Yii框架分页技术实例分析
Aug 30 PHP
php新建文件的方法实例
Sep 26 PHP
Laravel 添加多语言提示信息的方法
Sep 29 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
May 27 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
Windows下安装Memcached的步骤说明
2010/04/25 PHP
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
php使用yield对性能提升的测试实例分析
2019/09/19 PHP
javascript StringBuilder类实现
2008/12/22 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
js图片预加载示例
2014/04/30 Javascript
js动态改变select选择变更option的index值示例
2014/07/10 Javascript
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
简介JavaScript中Math.cos()余弦方法的使用
2015/06/15 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
每天一篇javascript学习小结(Function对象)
2015/11/16 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
JavaScript数据推送Comet技术详解
2016/04/07 Javascript
jquery获取所有选中的checkbox实现代码
2016/05/26 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
JavaScript中 ES6变量的结构赋值
2018/07/10 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
小程序外卖订单界面的示例代码
2019/12/30 Javascript
Vue中keep-alive组件作用详解
2020/02/04 Javascript
[01:03:03]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python程序语言快速上手教程
2012/07/18 Python
深入解析Python编程中JSON模块的使用
2015/10/15 Python
Numpy数组的保存与读取方法
2018/04/04 Python
python3处理含有中文的url方法
2018/05/10 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
使用PyTorch训练一个图像分类器实例
2020/01/08 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
介绍一下Linux中的链接
2016/06/05 面试题
2014升学宴答谢词
2014/01/26 职场文书
委托书如何写
2014/08/30 职场文书
教师纪念9.18事件演讲稿范文
2014/09/14 职场文书
学历证明范文
2015/06/16 职场文书
python学习之panda数据分析核心支持库
2021/05/07 Python