的thinkphp3.1版本增加的表单提交场合法性检测,可以较好地保护了数据的安全性。这一特征是3.1的安全功能的一个重要组成部分。

表单字段合法性检测需要使用创建方法创建数据对象以起作用。具体有两种方法:

首先,属性定义

的insertfields和updatefields属性可以被添加和编辑表格的设置模式。当使用创建方法创建数据对象时,在范围内未定义的属性将被直接丢弃,这样表单就不能提交非法数据。

该insertfields和updatefields属性设置使用一个字符串(用逗号分割的多个字段)或数组,如:


类用户模型扩展模型{
保护insertfields美元=阵列('account ','password ','nickname,'email');
保护updatefields美元=阵列('nickname,'email');
}




字段集应该是实际的数据表字段,而不受字段映射的影响。

当我们使用它,我们调用Create方法时,我们自动识别insertfields和updatefields基于提交类型属性:


D(用户的)->创建();




当使用创建创建数据对象的方法,当新用户数据添加,它会屏蔽领域outside'account ','password ','nickname'and'email。当编辑,它将屏幕字段outside'nickname'and'email。

下面是一个字符串定义,它同样有效:


类用户模型扩展模型{
保护insertfields美元= 'account、密码、昵称、邮箱;
保护updatefields美元= 'nickname,电子邮件;
}




两。方法调用

如果你不想insertfields和updatefields定义属性,或者你想动态调用,您可以直接拨打电话之前创建的方法,例如,实现相同的功能,如上面的例子。

添加新用户数据时,使用:


用户名= M(用户的);
为用户->现场('account、密码、昵称、电子邮件)->创建();
$用户>添加();




在更新用户数据时,使用:


用户名= M(用户的);
为用户->现场('nickname,电子邮件)->创建();
用户> >($)- >保存();




这里的字段也是实际的数据表字段,字段方法也可以用作数组。

通过实地合法性测试,您不再需要担心用户在提交表单时对非法字段数据的注入。显然,第二种方法更灵活,可以根据需要选择。