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 ignore_user_abort与register_shutdown_function 使用方法
Jun 14 PHP
PHP 批量更新网页内容实现代码
Jan 05 PHP
php max_execution_time执行时间问题
Jul 17 PHP
解析PHP中intval()等int转换时的意外异常情况
Jun 21 PHP
PHP调用Linux命令权限不足问题解决方法
Feb 07 PHP
php基于socket实现SMTP发送邮件的方法
Mar 05 PHP
php微信浏览器分享设置以及回调详解
Aug 01 PHP
Yii2下点击验证码的切换实例代码
Mar 14 PHP
PHP实现根据数组的值进行分组的方法
Apr 20 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
PHP实现类似于C语言的文件读取及解析功能
Sep 01 PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 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
PHP 基于Yii框架中使用smarty模板的方法详解
2013/06/13 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
jquery Firefox3.5中操作select的问题
2009/07/10 Javascript
Javascript中valueOf与toString区别浅析
2013/03/19 Javascript
jQuery 获取兄弟元素的几种不错方法
2014/05/23 Javascript
JavaScript设计模式之装饰者模式介绍
2014/12/28 Javascript
JavaScript原生对象之Date对象的属性和方法详解
2015/03/13 Javascript
JQuery实现超链接鼠标提示效果的方法
2015/06/10 Javascript
基于javascript实现动态显示当前系统时间
2016/01/28 Javascript
js实现文字滚动效果
2016/03/03 Javascript
jQuery Ajax 上传文件处理方式介绍(推荐)
2016/06/30 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
jQuery Mobile和HTML5开发App推广注册页
2016/11/07 Javascript
网页中的图片查看器viewjs使用方法
2017/07/11 Javascript
JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
2018/05/07 Javascript
分享一个vue项目“脚手架”项目的实现步骤
2019/05/26 Javascript
vue中的 $slot 获取插槽的节点实例
2019/11/12 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
Python实现线性插值和三次样条插值的示例代码
2019/11/13 Python
python 实现任务管理清单案例
2020/04/25 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
Tensorflow与Keras自适应使用显存方式
2020/06/22 Python
地图可视化神器kepler.gl python接口的使用方法
2020/12/22 Python
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
粗加工管理制度
2014/02/04 职场文书
数控专业毕业生自荐信范文
2014/03/04 职场文书
保护环境建议书400字
2014/05/13 职场文书
企业务虚会发言材料
2014/10/20 职场文书
五四青年节活动总结
2015/02/10 职场文书
铁人纪念馆观后感
2015/06/16 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS