<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="详解ThinkPHP3.1新特性之字段合法性检测" id="card1">
<p> 游客</p><p>
标题:详解ThinkPHP3.1新特性之字段合法性检测<br/>
正文:<br/>
ThinkPHP3.1版增加了表单提交的字段合法性检测，可以更好的保护数据的安全性。这一特性是3.1安全特性中的一个重要部分。表单字段合法性检测需要使用create方法创建数据对象的时候才能生效，具体有两种方式：一、属性定义可以给模型配置insertFields 和 updateFields属性用于新增和编辑表单设置，使用create方法创建数据对象的时候，不在定义范围内的属性将直接丢弃，避免表单提交非法数据。insertFields 和 updateFields属性的设置采用字符串（逗号分割多个字段）或者数组的方式，例如：class UserModel extends Model{<br/>  protected $insertFields = array('account','password','nickname','email');<br/>  protected $updateFields = array('nickname','email');<br/> }设置的字段应该是实际的数据表字段，而不受字段映射的影响。在使用的时候，我们调用create方法的时候，会根据提交类型自动识别insertFields和updateFields属性：D('User')-&amp;gt;create();使用create方法创建数据对象的时候，新增用户数据的时候，就会屏蔽'account','password','nickname','email' 之外的字段，编辑的时候就会屏蔽'nickname','email'之外的字段。下面是采用字符串定义的方式，同样有效：class UserModel extends Model{<br/>  protected $insertFields = 'account,password,nickname,email';<br/>  protected $updateFields = 'nickname,email';<br/> }二、方法调用如果不想定义insertFields和updateFields属性，或者希望可以动态调用，可以在调用create方法之前直接调用field方法，例如，实现和上面的例子同样的作用：在新增用户数据的时候，使用：$User = M('User');<br/>$User-&amp;gt;field('account,pas<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1441&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1441&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1441&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1441&amp;Page=2">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1441">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1441">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>