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个人网站架设连环讲(二)
Oct 09 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
Jan 03 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
Jun 21 PHP
教你如何解密 “ PHP 神盾解密工具 ”
Jun 20 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
Aug 19 PHP
php使用Jpgraph绘制3D饼状图的方法
Jun 10 PHP
PHP正则获取页面所有图片地址
Mar 23 PHP
php及codeigniter使用session-cookie的方法(详解)
Apr 06 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
Laravel 添加多语言提示信息的方法
Sep 29 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
Oct 03 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 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添加MySQL数据记录代码
2008/06/07 PHP
PHP 数组入门教程小结
2009/05/20 PHP
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
php结合curl实现多线程抓取
2015/07/09 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
redis+php实现微博(二)发布与关注功能详解
2019/09/23 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
关于递归运算的顺序测试代码
2011/11/30 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
JS原型链怎么理解
2016/06/27 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
2016/10/05 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
2016/11/18 Javascript
Node.js中sequelize时区的配置方法
2017/12/10 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
打开电脑上的QQ的python代码
2013/02/10 Python
python3获取两个日期之间所有日期,以及比较大小的实例
2018/04/08 Python
Anaconda下安装mysql-python的包实例
2018/06/11 Python
python获取服务器响应cookie的实例
2018/12/28 Python
python实现远程控制电脑
2019/05/23 Python
Django REST Framework序列化外键获取外键的值方法
2019/07/26 Python
解决python调用自己文件函数/执行函数找不到包问题
2020/06/01 Python
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
计算机专业自我鉴定
2013/10/15 职场文书
音乐器材管理制度
2014/01/31 职场文书
老总助理工作岗位职责
2014/02/06 职场文书
中职毕业生自我鉴定范文(3篇)
2014/09/28 职场文书
2014年城管工作总结
2014/11/20 职场文书
行政人事专员岗位职责
2015/04/07 职场文书
投诉信范文
2015/07/02 职场文书
志愿服务心得体会
2016/01/15 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书
「女孩的钓鱼慢活」全新版权绘公布
2022/03/21 日漫
Redis安装使用RedisJSON模块的方法
2022/03/23 Redis