前后端数据验证的区别
前端数据验证(一般指的是表单验证):为了提升用户体验,减少与后端的交互;但容易被他人修改或删除,甚至用其他抓包软件跳过验证直接向后端发送数据,安全性低。
后端数据验证:为了保证数据的正确性,不容易被他人修改,安全性高,所以即使没有前端验证,也必须要有后端验证。(必须的)
前端验证
自己通过JS手动实现
使用jquery validate插件,详情可以参考
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)
全选:
$_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)类型1 类型2 类型3 类型4 类型5
注意:每个radio的name值必须相同,获取时$_POST['catetype']
-
下拉列表
注意:第一个“请选择”的value一定要写,否则默认值就是'--请选择--'