ThinkPHP表單自動提交驗(yàn)證實(shí)例教程
更新時間:2014年07月18日 16:12:45 投稿:shichen2014
這篇文章主要介紹了ThinkPHP表單自動提交驗(yàn)證實(shí)例教程,非常有實(shí)用價值,需要的朋友可以參考下
本文以實(shí)例講述了ThinkPHP表單自動提交驗(yàn)證的實(shí)現(xiàn)過程,詳細(xì)步驟如下所示:
一、模板部分:
<!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示例:表單提交、自動驗(yàn)證和自動填充</TITLE> </HEAD> <BODY> <div class="main"> <FORM METHOD=POST ACTION="__URL__/insert"> <TABLE cellpadding=2 cellspacing=2> <TR> <TD width="12%">標(biāo)題:</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>內(nèi)容:</TD> <TD><TEXTAREA NAME="content" class="large bLeft" ROWS="8" COLS="25"></TEXTAREA></TD> </TR> <TR> <TD>驗(yàn)證碼:</TD> <TD><INPUT TYPE="text" NAME="verify" style="height:23px" class="small" > <img src="__URL__/verify" align="absmiddle" /> 輸入對應(yīng)的數(shù)字</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 { // 自動驗(yàn)證設(shè)置 protected $_validate = array(//這里必須定義為$_validata用來驗(yàn)證 array('title','require','標(biāo)題必須!',1), array('email','email','郵箱格式錯誤!',2), array('content','require','內(nèi)容必須'), array('verify','require','驗(yàn)證碼必須!'), array('verify','CheckVerify','驗(yàn)證碼錯誤',0,'callback'),//callback 使用方法驗(yàn)證,前面定義的驗(yàn)證規(guī)則是一個當(dāng)前 Model 類的方法 //這里如果有不太理解的話可以看本類的最后一個方法 array('title','','標(biāo)題已經(jīng)存在',0,'unique','add'),//附加驗(yàn)證unique,unique 驗(yàn)證是否唯一,系統(tǒng)會根據(jù)字段目前的值查詢數(shù)據(jù)庫來判斷是否存在相同的值 ); /*think的驗(yàn)證機(jī)制,省去了不少麻煩非空:equire 郵箱:email 驗(yàn)證碼正確:CheckVerify array()數(shù)組內(nèi)容array(驗(yàn)證字段,驗(yàn)證規(guī)則,錯誤提示,驗(yàn)證條件,附加規(guī)則,驗(yàn)證時間) 驗(yàn)證條件 EXISTS_TO_VAILIDATE 或者 0 存在字段就驗(yàn)證 (默認(rèn)) MUST_TO_VALIDATE 或者1 必須驗(yàn)證 VALUE_TO_VAILIDATE 或者 2 值不為空的時候驗(yàn)證 附加規(guī)則 配合驗(yàn)證規(guī)則使用,包括: function 使用函數(shù)驗(yàn)證,前面定義的驗(yàn)證規(guī)則是一個函數(shù)名 callback 使用方法驗(yàn)證,前面定義的驗(yàn)證規(guī)則是一個當(dāng)前 Model 類的方法 confirm 驗(yàn)證表單中的兩個字段是否相同,前面定義的驗(yàn)證規(guī)則是一個字段名 equal 驗(yàn)證是否等于某個值,該值由前面的驗(yàn)證規(guī)則定義 in 驗(yàn)證是否在某個范圍內(nèi),前面定義的驗(yàn)證規(guī)則必須是一個數(shù)組 unique 驗(yàn)證是否唯一,系統(tǒng)會根據(jù)字段目前的值查詢數(shù)據(jù)庫來判斷是否存在相同的值 regex 使用正則進(jìn)行驗(yàn)證,表示前面定義的驗(yàn)證規(guī)則是一個正則表達(dá)式(默認(rèn)) */ // 自動填充設(shè)置 //由上面推導(dǎo),下面這個是自動填充字段了,方便明了 protected $_auto = array(//同樣這里必須定義為$_auto array('status','1','ADD'), array('create_time','time','ADD','function'),//這里指明填充使用函數(shù)time() ); /* 數(shù)組因子: array(填充字段,填充內(nèi)容,填充條件,附加規(guī)則) 填充條件包括: ADD 新增數(shù)據(jù)的時候處理(默認(rèn)方式) Update 更新數(shù)據(jù)的時候處理 ALL 所有情況下都進(jìn)行處理 附加規(guī)則包括: function 使用函數(shù) callback 回調(diào)方法 field 用其它字段填充 string 字符串(默認(rèn)方式) */ public function CheckVerify() { return md5($_POST['verify']) == $_SESSION['verify']; } } ?>
三、控制器部分indexaction類程序代碼:
<?php class IndexAction extends Action{ // 首頁 public function index(){ $Form = D("Form");//創(chuàng)建一個對象 $list = $Form->top6('','*','id desc');//從數(shù)據(jù)庫中讀取最新6條記錄,并且安id倒序輸出 $this->assign('list',$list);//把數(shù)據(jù)傳到模板里 $this->display(); } // 處理表單數(shù)據(jù) public function insert() {//此方法對應(yīng)表單的ACTION="__URL__/insert" $Form = D("Form"); if($Form->create()) {//創(chuàng)建 Form 數(shù)據(jù)對象,默認(rèn)通過表單提交的數(shù)據(jù)進(jìn)行創(chuàng)建,為下面寫入數(shù)據(jù)庫做準(zhǔn)備 $Form->add();// 新增表單提交的數(shù)據(jù) ,吧上面創(chuàng)建的數(shù)據(jù)對象提交 $this->redirect();//返回上一個模塊,頁面跳轉(zhuǎn)可以說是 }else{ header("Content-Type:text/html; charset=utf-8"); exit($Form->getError().' [ <A href="javascript:history.back()" rel="external nofollow" >返 回</A> ]'); } } // 生成驗(yàn)證碼 //這個方法沒什么好說的,固定格式 public function verify() { import("ORG.Util.Image"); Image::buildImageVerify(); //這里兩個冒號是調(diào)用靜態(tài)方法 } } ?>
您可能感興趣的文章:
- ThinkPHP框架安全實(shí)現(xiàn)分析
- thinkphp微信開之安全模式消息加密解密不成功的解決辦法
- thinkphp5.1框架容器與依賴注入實(shí)例分析
- 對于ThinkPHP框架早期版本的一個SQL注入漏洞詳細(xì)分析
- thinkPHP實(shí)現(xiàn)表單自動驗(yàn)證
- ThinkPHP表單自動驗(yàn)證實(shí)例
- Thinkphp框架 表單自動驗(yàn)證登錄注冊 ajax自動驗(yàn)證登錄注冊
- ThinkPHP框架表單驗(yàn)證操作方法
- 關(guān)于ThinkPhp 框架表單驗(yàn)證及ajax驗(yàn)證問題
- ThinkPHP 表單自動驗(yàn)證運(yùn)用示例
- thinkPHP自動驗(yàn)證、自動添加及表單錯誤問題分析
- ThinkPHP中create()方法自動驗(yàn)證表單信息
- TP5框架安全機(jī)制實(shí)例分析
相關(guān)文章
使用php發(fā)送有附件的電子郵件-(PHPMailer使用的實(shí)例分析)
本篇文章介紹了使用php發(fā)送有附件的電子郵件-(PHPMailer使用的實(shí)例分析)需要的朋友參考下2013-04-04PHP實(shí)現(xiàn)QQ、微信和支付寶三合一收款碼實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于利用PHP如何實(shí)現(xiàn)QQ、微信和支付寶三合一收款碼的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-02-02Yii2 批量插入、更新數(shù)據(jù)實(shí)例
這篇文章主要介紹了Yii2 批量插入、更新數(shù)據(jù)實(shí)例的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-03-03php實(shí)現(xiàn)只保留mysql中最新1000條記錄
這篇文章主要介紹了php實(shí)現(xiàn)只保留mysql中最新1000條記錄的方法和相關(guān)示例及數(shù)據(jù)庫結(jié)構(gòu),十分的全面,有需要的小伙伴可以參考下。2015-06-06ThinkPHP實(shí)現(xiàn)支付寶接口功能實(shí)例
這篇文章主要介紹了ThinkPHP實(shí)現(xiàn)支付寶接口功能的方法,實(shí)例講述了支付寶接口的下載及二次開發(fā)方法,以及對應(yīng)的ThinkPHP開發(fā)技巧,需要的朋友可以參考下2014-12-12