在服務器端經過tp框架實現表單驗證php
用戶名、密碼、重複密碼、郵箱、qq、手機號碼、愛好、學歷html
具體步驟:數據庫
自動驗證是ThinkPHP模型層提供的一種數據驗證方法,能夠在使用create建立數據對象的時候自動進行數據驗證。安全
數據驗證能夠進行數據類型、業務規則、安全判斷等方面的驗證操做。服務器
數據驗證有兩種方式:框架
不管是什麼方式,驗證規則的定義是統一的規則,定義格式爲:ide
說明post
須要驗證的表單字段名稱,這個字段不必定是數據庫字段,也能夠是表單的一些輔助字段,例如確認密碼和驗證碼等等。有個別驗證規則和字段無關的狀況下,驗證字段是能夠隨意設置的,例如expire有效期規則是和表單字段無關的。若是定義了字段映射的話,這裏的驗證字段名稱應該是實際的數據表字段而不是表單字段。ui
要進行驗證的規則,須要結合附加規則,若是在使用正則驗證的附加規則狀況下,系統還內置了一些經常使用正則驗證的規則,能夠直接做爲驗證規則使用,包括:require 字段必須、email 郵箱、url URL地址、currency 貨幣、number 數字。this
用於驗證失敗後的提示信息定義
包含下面幾種狀況:
配合驗證規則使用,包括下面一些規則:
這裏的驗證時間須要注意,並不是只有這三種狀況,你能夠根據業務須要增長其餘的驗證時間。
在模型類裏面預先定義好該模型的自動驗證規則,咱們稱爲靜態定義。
1 <?php 2 namespace Home\Controller; 3 use Think\Controller; 4 class ZhuCeController extends Controller 5 { 6 7 function ZhuCe() 8 { 9 $cw=""; 10 if(!empty($_GET)) 11 { 12 $cw=$_GET["cw"]; 13 } 14 if(empty($_POST)) 15 { 16 $this->assign("error",$cw); 17 $this->display(); 18 } 19 else 20 { 21 $model=new\Home\Model\TextModel(); 22 //$model=D("Text"); 23 if(!$model->create())//有返回值 24 { 25 $e=$model->getError(); 26 $url="ZhuCe/cw/{$e}"; 27 $this->error("註冊失敗!",$url,1); 28 } 29 else 30 { 31 $model->add(); 32 33 } 34 35 } 36 37 } 38 }
1 <?php 2 namespace Home\Model; 3 use Think\Model; 4 class TextModel extends Model 5 { 6 protected $_validate=array( 7 array('uid','require','用戶名不能爲空!'), 8 array('pwd','require','密碼不能爲空!'), 9 array('pwd','pwd1','兩次輸入的密碼不一致!',1,'confirm'), 10 array('age','18,50','年齡必須在18-50歲之間!',1,'between'), 11 array('email','email','郵箱格式不正確!'), 12 array('email','','郵箱已被註冊!',1,'unique'),//unique能夠驗證非主鍵字段 13 ); 14 }
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>表單驗證</title> 6 </head> 7 8 <body> 9 <form action="__ACTION__" method="post"> 10 <div>用戶名:<input type="text" name="uid" /></div><br /> 11 <div>密 碼:<input type="text" name="pwd" /></div> 12 <div>確認密碼:<input type="text" name="pwd1" /></div><br /> 13 <div>年齡:<input type="text" name="age" /></div><br /> 14 <div>郵箱:<input type="text" name="email" /></div><br /> 15 <div>姓名:<input type="text" name="name" /></div><br /> 16 <!--顯示錯誤信息 --> 17 <div style=" width:200px; height:30px; border:#F00 solid 2px; line-height:30px; vertical-align:middle; text-align:center;"><{$error}></div><br /> 18 <div><input type="submit" value="註冊" /></div> 19 </form> 20 </body> 21 </html>
==>
==>
在進行自動驗證的時候,系統會對定義好的驗證規則進行依次驗證。若是某一條驗證規則沒有經過,則會報錯,getError方法返回的錯誤信息(字符串)就是對應字段的驗證規則裏面的錯誤提示信息。
若是採用動態驗證的方式,就比較靈活,能夠根據不一樣的須要,在操做同一個模型的時候使用不一樣的驗證規則
1 <?php 2 namespace Home\Controller; 3 use Think\Controller; 4 class ZhuCeController extends Controller 5 { 6 7 function ZhuCe() 8 { 9 $cw=""; 10 if(!empty($_GET)) 11 { 12 $cw=$_GET["cw"]; 13 } 14 if(empty($_POST)) 15 { 16 $this->assign("error",$cw); 17 $this->display(); 18 } 19 else 20 { 21 //動態驗證: 22 $model=new \Home\Model\TestModel(); 23 $rules=array( 24 array('uid','require','用戶名不能爲空!'), 25 array('pwd','require','密碼不能爲空!'), 26 array('pwd','pwd1','兩次輸入的密碼不一致!',1,'confirm'), 27 array('age','18,50','年齡必須在18-50歲之間!',1,'between'), 28 array('email','email','郵箱格式不正確!'), 29 array('email','','郵箱已被註冊!',1,'unique'),//unique能夠驗證非主鍵字段 30 ); 31 32 if(!$model->validate($rules)->create()) 33 { 34 echo $model->getError(); 35 } 36 else 37 { 38 $model->add(); 39 40 } 41 } 42 43 } 44 }
1 <?php 2 namespace Home\Model; 3 use Think\Model; 4 class TextModel extends Model 5 { 6 7 }
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>表單驗證</title> 6 </head> 7 8 <body> 9 <form action="__ACTION__" method="post"> 10 <div>用戶名:<input type="text" name="uid" /></div><br /> 11 <div>密 碼:<input type="text" name="pwd" /></div> 12 <div>確認密碼:<input type="text" name="pwd1" /></div><br /> 13 <div>年齡:<input type="text" name="age" /></div><br /> 14 <div>郵箱:<input type="text" name="email" /></div><br /> 15 <div>姓名:<input type="text" name="name" /></div><br /> 16 <!--顯示錯誤信息 --> 17 <div style=" width:200px; height:30px; border:#F00 solid 2px; line-height:30px; vertical-align:middle; text-align:center;"><{$error}></div><br /> 18 <div><input type="submit" value="註冊" /></div> 19 </form> 20 </body> 21 </html>