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 相关文章推荐
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
Oct 12 PHP
几款免费开源的不用数据库的php的cms
Dec 19 PHP
php在项目中寻找代码的坏味道(综艺命名)
Jul 19 PHP
解析wamp5下虚拟机配置文档
Jun 27 PHP
PHP实现动态柱状图改进版
Mar 30 PHP
PHP CURL 多线程操作代码实例
May 13 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
Yii2前后台分离及migrate使用(七)
May 04 PHP
PHP删除数组中指定下标的元素方法
Feb 03 PHP
PHP的RSA加密解密方法以及开发接口使用
Feb 11 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
yii2 开发api接口时优雅的处理全局异常的方法
May 14 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
全国FM电台频率大全 - 20 广西省
2020/03/11 无线电
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
php实现数据库的增删改查
2017/02/26 PHP
日期处理的js库(迷你版)--自建js库总结
2011/11/21 Javascript
一个简单的弹性返回顶部JS代码实现介绍
2013/06/09 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
js获取下拉列表的值和元素个数示例
2014/05/07 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
用JS实现简单的登录验证功能
2017/07/28 Javascript
nodejs 使用 js 模块的方法实例详解
2018/12/04 NodeJs
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
openlayers4实现点动态扩散
2020/08/17 Javascript
vue 数据双向绑定的实现方法
2021/03/04 Vue.js
Python自定义类的数组排序实现代码
2016/08/28 Python
Python 类的继承实例详解
2017/03/25 Python
linux下python使用sendmail发送邮件
2018/05/22 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
澳大利亚领先的在线美容商城:Adore Beauty
2017/04/14 全球购物
英国休闲奢华的缩影:Crew Clothing
2019/05/05 全球购物
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
中医药大学毕业生自荐信
2013/11/08 职场文书
个人自我鉴定写法
2013/11/30 职场文书
机关单位人员学雷锋心得体会
2014/03/10 职场文书
毕业自我鉴定书
2014/03/24 职场文书
中学生操行评语大全
2014/04/24 职场文书
保研导师推荐信
2015/03/25 职场文书
优秀大学生自荐信
2015/03/26 职场文书
担保书范文
2019/07/09 职场文书
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS
手把手教你用SpringBoot将文件打包成zip存放或导出
2021/06/11 Java/Android