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中使用XML
Oct 09 PHP
PHP小技巧搜集,每个PHPer都来露一手
Jan 02 PHP
php设计模式 Proxy (代理模式)
Jun 26 PHP
PHP乱码问题,UTF-8乱码常见问题小结
Apr 09 PHP
PHP实现手机归属地查询API接口实现代码
Aug 27 PHP
php采用ajax数据提交post与post常见方法总结
Nov 10 PHP
Ubuntu12下编译安装PHP5.3开发环境
Mar 27 PHP
php文件上传的两种实现方法
Apr 04 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
Oct 09 PHP
一个非常实用的php文件上传类
Jul 04 PHP
php实现解析xml并生成sql语句的方法
Feb 03 PHP
浅谈Laravel中使用Slack进行异常通知
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
php版微信公众平台回复中文出现乱码问题的解决方法
2016/09/22 PHP
使用WAMP搭建PHP本地开发环境
2017/05/10 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
Thinkphp 框架扩展之标签库驱动原理与用法分析
2020/04/23 PHP
用JavaScript修改CSS属性的代码
2013/05/06 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
JS实现很酷的水波文字特效实例
2015/02/26 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
RequireJS简易绘图程序开发
2016/10/28 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
Vue一次性简洁明了引入所有公共组件的方法
2018/11/28 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
Python itertools模块详解
2015/05/09 Python
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
python使用Tesseract库识别验证
2018/03/21 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
python3实现弹弹球小游戏
2019/11/25 Python
From CSV to SQLite3 by python 导入csv到sqlite实例
2020/02/14 Python
Python-jenkins模块获取jobs的执行状态操作
2020/05/12 Python
一款基于css3的动画按钮代码教程
2014/11/23 HTML / CSS
基于DOM+CSS3实现OrgChart组织结构图插件
2016/03/02 HTML / CSS
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
可口可乐唇膏:Lip Smackers
2019/08/27 全球购物
写一个方法1000的阶乘
2012/11/21 面试题
会计电算化专业自荐信
2014/03/15 职场文书
合伙协议书
2014/04/23 职场文书
感恩老师的演讲稿
2014/05/06 职场文书
国际会计专业求职信
2014/08/04 职场文书
接待员岗位职责范本
2015/04/15 职场文书
如何通过cmd 连接阿里云服务器
2022/04/18 Servers
小喇叭开始广播了! 四十多年前珍贵老照片
2022/05/09 无线电