当前位置:首页 > CMS教程 > Thinkphp > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-03-21 14:23:12 浏览: 评论:0 

这篇文章主要介绍了ThinkPHP表单自动提交验证实例教程,非常有实用价值,需要的朋友可以参考下。

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

一、模板部分:

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
  2. <HTML> 
  3. <HEAD> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
  5. <TITLE>ThinkPHP示例:表单提交、自动验证和自动填充</TITLE> 
  6. </HEAD> 
  7. <BODY> 
  8. <div class="main"> 
  9. <FORM METHOD=POST ACTION="__URL__/insert"> 
  10. <TABLE cellpadding=2 cellspacing=2> 
  11. <TR> 
  12.  <TD width="12%">标题:</TD> 
  13.  <TD ><INPUT TYPE="text" NAME="title" style="height:23px" class="large bLeft"></TD> 
  14. </TR> 
  15. <TR> 
  16.  <TD >邮箱:</TD> 
  17.  <TD ><INPUT TYPE="text" NAME="email" style="height:23px" class="large bLeft"></TD> 
  18. </TR> 
  19. <TR> 
  20.  <TD>内容:</TD> 
  21.  <TD><TEXTAREA NAME="content" class="large bLeft" ROWS="8" COLS="25"></TEXTAREA></TD> 
  22. </TR> 
  23. <TR> 
  24.  <TD>验证码:</TD> 
  25.  <TD><INPUT TYPE="text" NAME="verify" style="height:23px" class="small" > <img src="__URL__/verify" align="absmiddle" /> 输入对应的数字</TD> 
  26. </TR> 
  27. <TR> 
  28.  <TD></TD> 
  29.  <TD><INPUT TYPE="submit" class="button" value="提 交"> <INPUT TYPE="reset" class="button" value="清 空"></TD> 
  30. </TR> 
  31. <TR> 
  32. <TD></TD> 
  33.  <TD ><HR></TD> 
  34. </TR> 
  35. <volist name="list" id="vo"> 
  36. <TR> 
  37. <TD></TD> 
  38.  <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> 
  39. </TR> 
  40. <TR > 
  41. <TD></TD> 
  42.  <TD ><div class="content">{$vo.content|nl2br}</div></TD> 
  43. </TR> 
  44. </volist> 
  45. </TABLE> 
  46.  </FORM> 
  47. </div> 
  48. </BODY> 
  49. </HTML> 

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

  1. <?php  
  2. class FormModel extends Model { 
  3.  // 自动验证设置 
  4.  protected $_validate  =  array(//这里必须定义为$_validata用来验证 
  5.  array('title','require','标题必须!',1), 
  6.  array('email','email','邮箱格式错误!',2), 
  7.  array('content','require','内容必须'), 
  8.  array('verify','require','验证码必须!'), 
  9.  array('verify','CheckVerify','验证码错误',0,'callback'),//callback 使用方法验证,前面定义的验证规则是一个当前 Model 类的方法  
  10. //这里如果有不太理解的话可以看本类的最后一个方法 
  11.  array('title','','标题已经存在',0,'unique','add'),//附加验证unique,unique 验证是否唯一,系统会根据字段目前的值查询数据库来判断是否存在相同的值 
  12.  ); 
  13.  /*think的验证机制,省去了不少麻烦非空:equire 邮箱:email 验证码正确:CheckVerify 
  14.  array()数组内容array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间) 
  15.  验证条件 
  16.  EXISTS_TO_VAILIDATE 或者 0 存在字段就验证 (默认) 
  17.  MUST_TO_VALIDATE 或者1 必须验证 
  18.  VALUE_TO_VAILIDATE 或者 2 值不为空的时候验证 
  19.  附加规则 配合验证规则使用,包括: 
  20.  function 使用函数验证,前面定义的验证规则是一个函数名 
  21.  callback 使用方法验证,前面定义的验证规则是一个当前 Model 类的方法 
  22.  confirm 验证表单中的两个字段是否相同,前面定义的验证规则是一个字段名 
  23.  equal 验证是否等于某个值,该值由前面的验证规则定义 
  24.  in 验证是否在某个范围内,前面定义的验证规则必须是一个数组 
  25.  unique 验证是否唯一,系统会根据字段目前的值查询数据库来判断是否存在相同的值 
  26.  regex 使用正则进行验证,表示前面定义的验证规则是一个正则表达式(默认) 
  27.  */ 
  28.  // 自动填充设置 
  29.  //由上面推导,下面这个是自动填充字段了,方便明了 
  30.  protected $_auto  =  array(//同样这里必须定义为$_auto 
  31.  array('status','1','ADD'), 
  32.  array('create_time','time','ADD','function'),//这里指明填充使用函数time() 
  33.  ); 
  34.  /* 
  35.  数组因子: 
  36.  array(填充字段,填充内容,填充条件,附加规则) 
  37.  填充条件包括: 
  38.  ADD 新增数据的时候处理(默认方式) 
  39.  Update 更新数据的时候处理 
  40.  ALL 所有情况下都进行处理 
  41.    
  42.  附加规则包括: 
  43.  function 使用函数 
  44.  callback 回调方法 
  45.  field 用其它字段填充 
  46.  string 字符串(默认方式) 
  47.  */ 
  48.  
  49.  public function CheckVerify() { 
  50.   return md5($_POST['verify']) == $_SESSION['verify']; 
  51.  } 
  52. ?> 

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

  1. <?php  
  2. class IndexAction extends Action{ 
  3.  // 首页 
  4.  public function index(){ 
  5.   $Form = D("Form");//创建一个对象 
  6.   $list = $Form->top6('','*','id desc');//从数据库中读取最新6条记录,并且安id倒序输出 
  7.   $this->assign('list',$list);//把数据传到模板里 
  8.   $this->display(); 
  9.  } 
  10.  // 处理表单数据 
  11.  public function insert() {//此方法对应表单的ACTION="__URL__/insert" 
  12.   $Form = D("Form"); 
  13.   if($Form->create()) {//创建 Form 数据对象,默认通过表单提交的数据进行创建,为下面写入数据库做准备 
  14.    $Form->add();// 新增表单提交的数据 ,吧上面创建的数据对象提交 
  15.    $this->redirect();//返回上一个模块,页面跳转可以说是 
  16.   }else
  17.    header("Content-Type:text/html; charset=utf-8"); 
  18.    exit($Form->getError().' [ <A href="javascript:history.back()" rel="external nofollow" >返 回</A> ]'); 
  19.   } 
  20.  } 
  21.  // 生成验证码 
  22.  //这个方法没什么好说的,固定格式 
  23.  public function verify() { 
  24.   import("ORG.Util.Image"); 
  25.    Image::buildImageVerify(); //这里两个冒号是调用静态方法 
  26.  } 
  27. }  
  28. ?> 

Tags: ThinkPHP表单自动提交

分享到: