ThinkPHP表单自动提交验证实例教程


Posted in PHP onJuly 18, 2014

本文以实例讲述了ThinkPHP表单自动提交验证的实现过程,详细步骤如下所示:

一、模板部分:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<TITLE>ThinkPHP示例:表单提交、自动验证和自动填充</TITLE>
</HEAD>
<BODY>
<div class="main">
<FORM METHOD=POST ACTION="__URL__/insert">
<TABLE cellpadding=2 cellspacing=2>
<TR>
 <TD width="12%">标题:</TD>
 <TD ><INPUT TYPE="text" NAME="title" style="height:23px" class="large bLeft"></TD>
</TR>
<TR>
 <TD >邮箱:</TD>
 <TD ><INPUT TYPE="text" NAME="email" style="height:23px" class="large bLeft"></TD>
</TR>
<TR>
 <TD>内容:</TD>
 <TD><TEXTAREA NAME="content" class="large bLeft" ROWS="8" COLS="25"></TEXTAREA></TD>
</TR>
<TR>
 <TD>验证码:</TD>
 <TD><INPUT TYPE="text" NAME="verify" style="height:23px" class="small" > <img src="__URL__/verify" align="absmiddle" /> 输入对应的数字</TD>
</TR>
<TR>
 <TD></TD>
 <TD><INPUT TYPE="submit" class="button" value="提 交"> <INPUT TYPE="reset" class="button" value="清 空"></TD>
</TR>
<TR>
<TD></TD>
 <TD ><HR></TD>
</TR>
<volist name="list" id="vo">
<TR>
<TD></TD>
 <TD style="border-bottom:1px dotted silver">{$vo.title} <span style="color:gray">[{$vo.email} {$vo.create_time|date='Y-m-d H:i:s',###}]</span></TD>
</TR>
<TR >
<TD></TD>
 <TD ><div class="content">{$vo.content|nl2br}</div></TD>
</TR>
</volist>
</TABLE>
 </FORM>
</div>
</BODY>
</HTML>

二、模型部分form类程序代码:

<?php 
class FormModel extends Model {
 // 自动验证设置
 protected $_validate  =  array(//这里必须定义为$_validata用来验证
 array('title','require','标题必须!',1),
 array('email','email','邮箱格式错误!',2),
 array('content','require','内容必须'),
 array('verify','require','验证码必须!'),
 array('verify','CheckVerify','验证码错误',0,'callback'),//callback 使用方法验证,前面定义的验证规则是一个当前 Model 类的方法 
//这里如果有不太理解的话可以看本类的最后一个方法
 array('title','','标题已经存在',0,'unique','add'),//附加验证unique,unique 验证是否唯一,系统会根据字段目前的值查询数据库来判断是否存在相同的值
 );
 /*think的验证机制,省去了不少麻烦非空:equire 邮箱:email 验证码正确:CheckVerify
 array()数组内容array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间)
 验证条件
 EXISTS_TO_VAILIDATE 或者 0 存在字段就验证 (默认)
 MUST_TO_VALIDATE 或者1 必须验证
 VALUE_TO_VAILIDATE 或者 2 值不为空的时候验证
 附加规则 配合验证规则使用,包括:
 function 使用函数验证,前面定义的验证规则是一个函数名
 callback 使用方法验证,前面定义的验证规则是一个当前 Model 类的方法
 confirm 验证表单中的两个字段是否相同,前面定义的验证规则是一个字段名
 equal 验证是否等于某个值,该值由前面的验证规则定义
 in 验证是否在某个范围内,前面定义的验证规则必须是一个数组
 unique 验证是否唯一,系统会根据字段目前的值查询数据库来判断是否存在相同的值
 regex 使用正则进行验证,表示前面定义的验证规则是一个正则表达式(默认)
 */
 // 自动填充设置
 //由上面推导,下面这个是自动填充字段了,方便明了
 protected $_auto  =  array(//同样这里必须定义为$_auto
 array('status','1','ADD'),
 array('create_time','time','ADD','function'),//这里指明填充使用函数time()
 );
 /*
 数组因子:
 array(填充字段,填充内容,填充条件,附加规则)
 填充条件包括:
 ADD 新增数据的时候处理(默认方式)
 Update 更新数据的时候处理
 ALL 所有情况下都进行处理
 
 附加规则包括:
 function 使用函数
 callback 回调方法
 field 用其它字段填充
 string 字符串(默认方式)
 */

 public function CheckVerify() {
  return md5($_POST['verify']) == $_SESSION['verify'];
 }
}
?>

三、控制器部分indexaction类程序代码:

<?php 
class IndexAction extends Action{
 // 首页
 public function index(){
  $Form = D("Form");//创建一个对象
  $list = $Form->top6('','*','id desc');//从数据库中读取最新6条记录,并且安id倒序输出
  $this->assign('list',$list);//把数据传到模板里
  $this->display();
 }
 // 处理表单数据
 public function insert() {//此方法对应表单的ACTION="__URL__/insert"
  $Form = D("Form");
  if($Form->create()) {//创建 Form 数据对象,默认通过表单提交的数据进行创建,为下面写入数据库做准备
   $Form->add();// 新增表单提交的数据 ,吧上面创建的数据对象提交
   $this->redirect();//返回上一个模块,页面跳转可以说是
  }else{
   header("Content-Type:text/html; charset=utf-8");
   exit($Form->getError().' [ <A href="javascript:history.back()" rel="external nofollow" >返 回</A> ]');
  }
 }
 // 生成验证码
 //这个方法没什么好说的,固定格式
 public function verify() {
  import("ORG.Util.Image");
   Image::buildImageVerify(); //这里两个冒号是调用静态方法
 }
} 
?>
PHP 相关文章推荐
php加速器eAccelerator的配置参数、API详解
May 05 PHP
php实现批量压缩图片文件大小的脚本
Jul 04 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
Jul 08 PHP
ThinkPHP多语言支持与多模板支持概述
Aug 22 PHP
基于PHP实现的事件机制实例分析
Jun 18 PHP
PHP实现简单汉字验证码
Jul 28 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
Mar 21 PHP
thinkphp框架下404页面设置 仅三步
May 14 PHP
Yii2如何批量添加数据
May 17 PHP
/etc/php-fpm.d/www.conf 配置注意事项
Feb 04 PHP
PHP实现负载均衡下的session共用功能
Apr 17 PHP
php生成短网址/短链接原理和用法实例分析
May 29 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 #PHP
ThinkPHP字符串函数及常用函数汇总
Jul 18 #PHP
ThinkPHP关于session的操作方法汇总
Jul 18 #PHP
php中实现精确设置session过期时间的方法
Jul 17 #PHP
ThinkPHP跳转页success及error模板实例教程
Jul 17 #PHP
浅谈php安全性需要注意的几点事项
Jul 17 #PHP
PHP采用XML-RPC构造Web Service实例教程
Jul 16 #PHP
You might like
一个很方便的 XML 类!!原创的噢
2006/10/09 PHP
ThinkPHP通过AJAX返回JSON的两种实现方法
2014/12/18 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
PHP sleep()函数, usleep()函数
2016/08/25 PHP
PHP设计模式之工厂模式详解
2017/10/24 PHP
ajax 文件上传应用简单实现
2009/03/03 Javascript
javascript 写的一个简单的timer
2009/07/30 Javascript
jQuery lazyload 的重复加载错误以及修复方法
2010/11/19 Javascript
JavaScript实现更改网页背景与字体颜色的方法
2015/02/02 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
微信小程序 location API接口详解及实例代码
2016/10/12 Javascript
微信小程序 wxapp内容组件 progress详细介绍
2016/10/31 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
JavaScript实现异步图像上传功能
2018/07/12 Javascript
基于D3.js实现时钟效果
2018/07/17 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
详解Vue取消eslint语法限制
2018/08/04 Javascript
JavaScript常用事件介绍
2019/01/21 Javascript
javascript实现拖拽碰撞检测
2020/03/12 Javascript
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
Python列表删除的三种方法代码分享
2017/10/31 Python
python打开使用的方法
2019/09/30 Python
原装进口全世界:天猫国际
2016/08/03 全球购物
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
const和static readonly区别
2013/05/20 面试题
采购主管的岗位职责
2013/12/17 职场文书
优秀教师事迹简介
2014/02/02 职场文书
爱心捐款倡议书
2014/04/14 职场文书
招标授权委托书样本
2014/09/23 职场文书
员工保密协议书
2014/09/27 职场文书
2014年电工工作总结
2014/11/20 职场文书
2014年消防工作总结
2014/11/21 职场文书
2016入党积极分子党校培训心得体会
2016/01/06 职场文书
配置Kubernetes外网访问集群
2022/03/31 Servers