在服務器端經過tp框架實現表單驗證php
用戶名、密碼、重複密碼、郵箱、qq、手機號碼、愛好、學歷html
具體步驟:數據庫
自動驗證是ThinkPHP模型層提供的一種數據驗證方法,能夠在使用create建立數據對象的時候自動進行數據驗證。安全
數據驗證能夠進行數據類型、業務規則、安全判斷等方面的驗證操做。服務器
數據驗證有兩種方式:框架
不管是什麼方式,驗證規則的定義是統一的規則,定義格式爲:ide
須要驗證的表單字段名稱,這個字段不必定是數據庫字段,也能夠是表單的一些輔助字段,例如確認密碼和驗證碼等等。有個別驗證規則和字段無關的狀況下,驗證字段是能夠隨意設置的,例如expire有效期規則是和表單字段無關的。若是定義了字段映射的話,這裏的驗證字段名稱應該是實際的數據表字段而不是表單字段。post
要進行驗證的規則,須要結合附加規則,若是在使用正則驗證的附加規則狀況下,系統還內置了一些經常使用正則驗證的規則,能夠直接做爲驗證規則使用,包括:require 字段必須、email 郵箱、url URL地址、currency 貨幣、number 數字。ui
用於驗證失敗後的提示信息定義this
包含下面幾種狀況:
配合驗證規則使用,包括下面一些規則:
這裏的驗證時間須要注意,並不是只有這三種狀況,你能夠根據業務須要增長其餘的驗證時間。
在模型類裏面預先定義好該模型的自動驗證規則,咱們稱爲靜態定義。
<?php namespace Home\Controller; use Think\Controller; class ZhuceController extends Controller { public function ZhuCe() { //靜態的驗證 $cw = ""; if(!empty($_GET)) { $cw = $_GET["cw"]; } if(empty($_POST)) { $this->assign("error",$cw); $this->display(); } else { $model = new \Home\Model\TestModel(); //$model = D("test"); //var_dump($model); if(!$model->create()) { //exit($model->getError()); $e = $model->getError(); $url = "Zhuce/cw/{$e}"; $this->error("註冊失敗",$url,1); } else { $model->add(); } } } }
<?php namespace Home\Model; use Think\Model; class TestModel extends Model { protected $_validate = array( array('uid','require','用戶名不能爲空'), array('pwd','require','密碼不能爲空'), array('pwd','pwd1','兩次輸入的密碼不一致',1,'confirm'), array('age','18,50','年齡必須在18到50之間',1,'between'), array('email','email','郵箱格式不正確'), array('email','','郵箱已被註冊',1,'unique'),//unique能夠驗證非主鍵字段 ); }
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>無標題文檔</title> </head> <body> <h1>註冊</h1> <form action="__ACTION__" method="post"> <div>用戶名:<input type="text" name="uid" /></div><br /> <div>密碼: <input type="text" name="pwd" /></div> <div>確認密碼:<input type="text" name="pwd1" /></div><br /> <div>年齡:<input type="text" name="age" /></div><br /> <div>郵箱:<input type="text" name="email" /></div><br /> <div>姓名:<input type="text" name="name" /></div><br /> <br /> <div><{$error}></div> <input type="submit" value="註冊" /> </form> </body> </html>
部分案例顯示效果:
若是採用動態驗證的方式,就比較靈活,能夠根據不一樣的須要,在操做同一個模型的時候使用不一樣的驗證規則,例如上面的靜態驗證方式能夠改成:
<?php namespace Home\Controller; use Think\Controller; class ZhuceController extends Controller { public function ZhuCe() { //靜態的驗證 $cw = ""; if(!empty($_GET)) { $cw = $_GET["cw"]; } if(empty($_POST)) { $this->assign("error",$cw); $this->display(); } else { //動態的驗證,以用戶名的驗證爲例,此時不須要新建模型 $model = new \Home\Model\TestModel(); $rules = array( array('uid','require','用戶名不能爲空'), array('pwd','require','密碼不能爲空'), array('pwd','pwd1','兩次輸入的密碼不一致',1,'confirm'), array('age','18,50','年齡必須在18到50之間',1,'between'), array('email','email','郵箱格式不正確'), array('email','','郵箱已被註冊',1,'unique'),//unique能夠驗證非主鍵字段 ); if(!$model->validate($rules)->create()) { echo $model->getError(); } else { $model->add(); } } } }
<?php namespace Home\Model; use Think\Model; class TestModel extends Model { }