前端与后端TP的数据校验

ChinaGuanq 2019-06-21

前后端数据验证的区别

  • 前端数据验证(一般指的是表单验证):为了提升用户体验,减少与后端的交互;但容易被他人修改或删除,甚至用其他抓包软件跳过验证直接向后端发送数据,安全性低

  • 后端数据验证:为了保证数据的正确性,不容易被他人修改,安全性高,所以即使没有前端验证,也必须要有后端验证。(必须的)

前端验证

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一定要写,否则默认值就是'--请选择--'

相关推荐