說明:這里沒練習靜態自動驗證:如果用到靜態驗證首先自定義一個控制器,再在Model文件夾里創建一個NiHaoModel.php 類 NiHao是自定義的,前綴可以隨意,但是一定要用駝峰法(首字母大寫)
在自定義控制器里用D()方法時里面要寫入NiHaoModel.php 類的前綴 NiHao 因為有這串代碼 protected $trueTableName = 'yonghu'; //作用是找到真實表名,系統默認找yong_hu這個表,需要定義此方法,才能找到yonghu表
<?php namespace Admin\Model; use Think\Model; class NiHaoModel extends Model { //protected $tablePrefix = "";
protected $trueTableName = 'yonghu'; //作用是找到真實表名,系統默認找yong_hu這個表,需要定義此方法,才能找到yonghu表
protected $_validate =array(//固定模式,在父類里面已定義
array('uid','require','用戶名不能為空!',0),//非空驗證:給yonghu表中的uid列,設置非空
array('pwd','pwd1','輸入的密碼不一致',0,'confirm'),//相等驗證:confirm(驗證表單中的兩個字段是否相同,定義的驗證規則是一個字段名),意思是pwd1必須為字段
array('email','email','郵箱格式不正確',0),
array('name','/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/','身份證號不正確',0,'regex'),//正則表達式,
array('age','18,50','年齡不在范圍內',0,'between')//范圍驗證:
); }
動態驗證:(不需要建Model模型)
1.建一個控制器,做表單操作(包含驗證)
<?php namespace Biaodan\Controller; use Think\Controller; class BiaodanController extends Controller { public function test() { if(empty($_POST))//如果$_POST空,顯示添加頁面,
{ $this->show(); } else //如果$_POST不為空,走驗證,驗證是否成功,添加數據庫
{ $y = D("yonghu"); $arr = array(//造一個驗證規則
array('uid','require','用戶名不能為空!',0),
array('pwd','pwd1','輸入的密碼不一致',0,'confirm'),//相等驗證:confirm(驗證表單中的兩個字段是否相同,定義的驗證規則是一個字段名),意思是pwd1必須為字段
array('email','email','郵箱格式不正確',0),
array('name','/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/','身份證號不正確',0,'regex'),//正則表達式,
array('age','18,50','年齡不在范圍內',0,'between')//范圍驗證
); if($y->validate($arr)->create())//$y->validate($arr),添加之前執行驗證規則
{ $y->add(); } else { die($y->getError()); } } } }
2.對應控制器方法的html頁面:
<!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>
<form action="__ACTION__" method="post">
<br />
<br />
<br />
<br />
<div>用戶名:<input type="text" name="uid" /></div>
<br />
<div>密碼:<input type="text" name="pwd" /></div>
<br />
<div>確認密碼:<input type="text" name="pwd1" /></div>
<br />
<div>姓名:<input type="text" name="name" /></div>
<br />
<div>郵箱:<input type="text" name="email" /></div>
<br />
<div>年齡:<input type="text" name="age" /></div>
<br />
<div><input type="submit" value="添加" /></div>
</form>
</body>
</html>
ajax:(不需要建Model模型)
1.建一個控制器,做表單操作(包含驗證)
<?php namespace Admin\Controller; use Think\Controller; class ZhuCeController extends Controller { public function add(){ $this->show(); } public function addchuli(){ $y = D("yonghubiao"); $arr = array( array('uid','require','用戶名不能為空!!'),//ps: require 意思是字段必須,就是不能為空
array('pwd','require','兩次密碼不一致!'),
array('name','require','沒有填寫名稱!!'),
array('email','email','郵箱格式不正確!!'),
array('age','/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/','身份證不合法',0,'regex'), ); if($y->validate($arr)->create()){ $y->add(); $this->ajaxReturn("注冊成功","eval"); }else{ $this->ajaxReturn($y->getError(),"eval"); } } }
2.對應控制器方法的html頁面:
<!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" />
<script src="__PUBLIC__/js/jquery-1.11.2.min.js"></script>
<title>用戶注冊</title>
</head>
<body>
<br />
<br />
<br />
<div>用戶名:<input type="text" id="uid" /></div>
<br />
<div> 密碼:<input type="text" id="pwd" /></div>
<br />
<div> 名稱:<input type="text" id="name" /></div>
<br />
<div> 郵箱:<input type="text" id="email" /></div>
<br />
<div>身份證號:<input type="text" id="age" /></div>
<br />
<div><input type="button" id="dtn" value="提交" /></div>
</body>
<script type="text/javascript"> $("#dtn").click(function(){ var uid = $("#uid").val(); var pwd = $("#pwd").val(); var name = $("#name").val(); var email = $("#email").val(); var age = $("#age").val(); $.ajax({ url:"__CONTROLLER__/addchuli", data:{uid:uid,pwd:pwd,name:name,email:email,age:age}, dataType:"TEXT", type:"POST", success: function(data){ alert(data); } }); }); </script>
</html>