ThinkPHP3.1新特性之字段合法性检测详解

 更新时间:2014年06月19日 14:46:53   投稿:shichen2014  
表单提交的字段合法性检测,可以更好的保护数据的安全性。这一特性是3.1安全特性中的一个重要部分。这篇文章主要介绍了ThinkPHP3.1的字段合法性检测,需要的朋友可以参考下

ThinkPHP3.1版增加了表单提交的字段合法性检测,可以更好的保护数据的安全性。这一特性是3.1安全特性中的一个重要部分。

表单字段合法性检测需要使用create方法创建数据对象的时候才能生效,具体有两种方式:

一、属性定义

可以给模型配置insertFields 和 updateFields属性用于新增和编辑表单设置,使用create方法创建数据对象的时候,不在定义范围内的属性将直接丢弃,避免表单提交非法数据。

insertFields 和 updateFields属性的设置采用字符串(逗号分割多个字段)或者数组的方式,例如:

class UserModel extends Model{
  protected $insertFields = array('account','password','nickname','email');
  protected $updateFields = array('nickname','email');
 }

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

在使用的时候,我们调用create方法的时候,会根据提交类型自动识别insertFields和updateFields属性:

D('User')->create();

使用create方法创建数据对象的时候,新增用户数据的时候,就会屏蔽'account','password','nickname','email' 之外的字段,编辑的时候就会屏蔽'nickname','email'之外的字段。

下面是采用字符串定义的方式,同样有效:

class UserModel extends Model{
  protected $insertFields = 'account,password,nickname,email';
  protected $updateFields = 'nickname,email';
 }

二、方法调用

如果不想定义insertFields和updateFields属性,或者希望可以动态调用,可以在调用create方法之前直接调用field方法,例如,实现和上面的例子同样的作用:

在新增用户数据的时候,使用:

$User = M('User');
$User->field('account,password,nickname,email')->create();
$User->add();

而在更新用户数据的时候,使用:

$User = M('User');
$User->field('nickname,email')->create();
$User->where($map)->save();

这里的字段也是实际的数据表字段。field方法也可以使用数组方式。

使用字段合法性检测后,你不再需要担心用户在提交表单的时候注入非法字段数据了。显然第二种方式更加灵活一些,根据需要选择吧!

相关文章

  • 详解使用php-cs-fixer格式化代码

    详解使用php-cs-fixer格式化代码

    这篇文章主要介绍了使用php-cs-fixer格式化代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • php实现mysql数据库备份类

    php实现mysql数据库备份类

    备份程序一共只有两个类:数据库备份器(DbBak)和表备份器(TableBak): 这个程序仅仅备份和恢复数据,使用方法很简单,实例化DbBak,然后调用bakupDb和restoreDb方法:
    2008-03-03
  • PHP中Session引起的脚本阻塞问题解决办法

    PHP中Session引起的脚本阻塞问题解决办法

    这个问题很多做php开发朋友应该都有遇到过,一个启用了session_start 页面,由于执行时间过长。导致通一个用户访问,另外一个很简单的启用session_start页面一直阻塞着。 直到第一个页面执行完了。第二个页面才可以读取。这个就是,我们常说的session阻塞机制。
    2014-04-04
  • php三元运算符知识汇总

    php三元运算符知识汇总

    三元运算符语法:条件 ? 结果1 : 结果2 说明:问号前面的位置是判断的条件,如果满足条件时结果1,不满足时结果2。下面我们来详细探讨下。
    2015-07-07
  • 在PHP8中向数组添加元素的常用方法

    在PHP8中向数组添加元素的常用方法

    这篇文章主要介绍了在PHP8中向数组添加元素的常用方法,在这里主要讲解几个常用的方法:使用方括号[]添加元素、使用array_unshift()函数,向数组的头部添加元素、使用array_push()函数,向数组的尾部添加元素、使用array_splice()函数添加元素,需要的朋友可以参考下
    2023-09-09
  • ThinkPHP Mobile使用方法简明教程

    ThinkPHP Mobile使用方法简明教程

    这篇文章主要介绍了ThinkPHP Mobile使用方法,需要的朋友可以参考下
    2014-06-06
  • Zend Framework入门知识点小结

    Zend Framework入门知识点小结

    这篇文章主要介绍了Zend Framework入门知识点,总结分析了Zend Framework入门学习的知识重点,需要的朋友可以参考下
    2016-03-03
  • PHP扩展迁移为PHP7扩展兼容性问题记录

    PHP扩展迁移为PHP7扩展兼容性问题记录

    PHP7扩展编写的时候,提供的一些内核方法和之前的PHP之前的版本并不能完全兼容。有不少方法参数做了调整。下面是在迁移过程中遇到的一些问题,感兴趣的朋友参考下吧
    2016-02-02
  • php实现微信扫码自动登陆与注册功能

    php实现微信扫码自动登陆与注册功能

    这篇文章主要介绍了php实现微信扫码自动登陆与注册功能,结合实例形式分析了php微信二维码识别接口与相关使用技巧,需要的朋友可以参考下
    2016-09-09
  • Laravel5.7框架安装与使用学习笔记图文详解

    Laravel5.7框架安装与使用学习笔记图文详解

    这篇文章主要介绍了Laravel5.7框架安装与使用学习笔记,结合图文形式详细讲解了Laravel5.7框架的安装、配置、组件、路由等基础与操作技巧,需要的朋友可以参考下
    2019-04-04

最新评论