前后端数据验证的区别
前端数据验证(一般指的是表单验证):为了提升用户体验,减少与后端的交互;但容易被他人修改或删除,甚至用其他抓包软件跳过验证直接向后端发送数据,安全性低。
后端数据验证:为了保证数据的正确性,不容易被他人修改,安全性高,所以即使没有前端验证,也必须要有后端验证。(必须的)
前端验证
自己通过JS手动实现
使用jquery validate插件,详情可以参考
http://www.51xuediannao.com/j...
TP的后端数据验证——自动验证
TP已经实现了对请求数据进行验证的功能,自动验证是TP模型层提供的一种数据验证方法
自动验证的使用
1、在模型层中定义验证规则
protected $_validate = array(
array('username', 'require', '用户名不能为空'),
array('username', '/^\w{4,12}$/', '用户名或密码错误', self::EXISTS_VALIDATE, 'regex'),
array('password', 'require', '密码不能为空'),
array('password', '/^[a-zA-Z0-9]{6,18}$/', '用户名或密码错误', self::EXISTS_VALIDATE, 'regex'),
array('repassword', 'password', '用户名或密码错误', self::EXISTS_VALIDATE, 'confirm'),
array('email', 'email', 'Email格式不正确!'),
array('hobby', '1,2,3', '请选择一项爱好!',self::EXISTS_VALIDATE, 'in'),
);
2、使用create()方法创建数据对象,使用这个数据对象与数据库通讯
$postData = $this->create($postData);
//如果$postData为false,说明验证不通过,请调用$this->getError()获取错误信息
//如果验证通过,$postData就是一个原本的数组
PHP中复选框、单选框、下拉列表的注意事项
-
复选框
checkbox选中了的才会有值;未选中的则没有值(根本请求不会发出checkbox的name)
<input type="checkbox" name="chk[]" value="0"> <input type="checkbox" name="chk[]" value="1"> <input type="checkbox" name="chk[]" value="2"> <input type="checkbox" name="chk[]" value="3">
全选:
$_POST['chk']为array(0=>'0',1=>'1',2=>'2',3=>'3');
只选择value=1和3的
$_POST['chk']为array(1=>'1',3=>'3');
注意:在给checkBox命名时,必须要加"[]" ,但是在接收时不能加"[]" 才能得到值!
-
单选框
radio选中了的才会有值;未选中的则没有值(根本请求不会发出radio的name)<input type="radio" name="catetype" value="1" />类型1 <input type="radio" name="catetype" value="2" />类型2 <input type="radio" name="catetype" value="3" />类型3 <input type="radio" name="catetype" value="4" />类型4 <input type="radio" name="catetype" value="5" />类型5
注意:每个radio的name值必须相同,获取时$_POST['catetype']
-
下拉列表
<select name="xueli"> <option value="">--请选择--</option> <option value="内容项二">内容项二</option> <option value="内容项三">内容项三</option> <option value="内容项四">内容项四</option> </select> 注意:第一个“请选择”的value一定要写,否则默认值就是'--请选择--'
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。