ThinkPHP中字段的映射

ThinkPHP中字段的映射

映射就是表示一个对应关系。

应用场景:在目前表单中的name值都和数据表中的字段名都是一样的,有一些人可能通过当前功能和表单的name值猜测出数据表的名字和表结构。后期就可能会找到系统的漏洞对系统的进行攻击。系统的安全性存在威胁。因此,我们可以使用一个障眼法,将name值来随机指定,name值就和表的字段不一致,那样别人就猜测不出表的结构。

因为如果字段和数据表中的字段不匹配,在操作的时候会被系统过滤,所以需要有一个对照列表,告知系统,不对应的name值是数据表中的字段。

字段映射和自动验证一样,没有语法,只有规则定义:

    protected $_map             =   array();  // 字段映射定义

这是父类模型中的代码实现,因为成员属性是父类模型中的,所以不能在父类模型中直接修改,需要在自定义模型中定义,例如:

<?php
//创建模型

//命名空间
namespace Admin\Model;
//引用父类模型
use Think\Model;
//声明模型并继承父类
class DeptModel extends Model{
    //字段映射定义
    protected $_map        =    array(

    	'abc'              =>   'name',
    	'wasd'             =>   'sort'
    );
}

因为数据对象中使用了字段映射的检查,所以,此处如果需要使用字段映射,则必须要使用数据对象的创建方法接收数据:

测试结果:

注意:在使用字段映射之后,被映射的字段后被放到数组的最后,按照字段映射的先后顺序进行排列。

猜你喜欢

转载自blog.csdn.net/qq_41630218/article/details/81140766