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的memory_limit限制的方法分享
Feb 21 PHP
php中unlink()、mkdir()、rmdir()等方法的使用介绍
Dec 21 PHP
php中smarty区域循环的方法
Jun 11 PHP
PHP实现简单实用的验证码类
Jul 29 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
PHP获取网页所有连接的方法(附demo源码下载)
Mar 30 PHP
Yii2 rbac权限控制操作步骤实例教程
Apr 29 PHP
PHP生成静态HTML文档实现代码
Jun 23 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
Jan 21 PHP
thinkPHP5.0框架安装教程
Mar 25 PHP
PHP实现的简单组词算法示例
Apr 10 PHP
php使用socket调用http和smtp协议实例小结
Jul 26 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读取MySQL数据代码
2008/06/05 PHP
PHP PDOStatement::setAttribute讲解
2019/02/01 PHP
不错的新闻标题颜色效果
2006/12/10 Javascript
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
JQuery 浮动导航栏实现代码
2009/08/27 Javascript
JS保留小数点(四舍五入、四舍六入)实现思路及实例
2013/04/25 Javascript
JavaScript回调(callback)函数概念自我理解及示例
2013/07/04 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
2016/08/18 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
静态页面实现 include 引入公用代码的示例
2017/09/25 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
vue中rem的配置的方法示例
2018/08/30 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
Python 列表(List) 的三种遍历方法实例 详解
2017/04/15 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
Face++ API实现手势识别系统设计
2018/11/21 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
2019/02/12 Python
python2和python3哪个使用率高
2020/06/23 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
UGG英国官方网站:UGG UK
2018/02/08 全球购物
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
战略合作协议书范本
2014/04/18 职场文书
工作粗心大意检讨书
2014/09/18 职场文书
公积金接收函格式
2015/01/30 职场文书
消防隐患整改通知书
2015/04/22 职场文书
2015年银行员工工作总结
2015/04/24 职场文书
烈士陵园观后感
2015/06/08 职场文书
对领导班子的意见和建议
2015/06/08 职场文书
源码解读Spring-Integration执行过程
2021/06/11 Java/Android
MySQL系列之三 基础篇
2021/07/02 MySQL
SQL实现LeetCode(176.第二高薪水)
2021/08/04 MySQL
idea以任意顺序debug多线程程序的具体用法
2021/08/30 Java/Android
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python