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

时间:2021-05-26

本文以实例讲述了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 验证是否唯一,系统会根据字段目前的值查询数据库来判断是否存在相同的值 ); // 自动填充设置 //由上面推导,下面这个是自动填充字段了,方便明了 protected $_auto = array(//同样这里必须定义为$_auto array('status','1','ADD'), array('create_time','time','ADD','function'),//这里指明填充使用函数time() ); 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(); //这里两个冒号是调用静态方法 }} ?>

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章