thinkphp 表单合法性检测
2024-08-30 04:28:19
在处理表单提交的数据的时候,建议尽量采用Think\Model类提供的create方法首先进行数据创建,然后再写入数据库。
create方法在创建数据的同时,可以进行更为安全的处理操作,而且这一切让你的表单处理变得更简单。
使用create方法创建数据对象的时候,可以使用数据的合法性检测,支持两种方式:
一、可以配置insertFields 和 updateFields属性
可以分别为新增和编辑表单设置insertFields
和 updateFields
属性,使用create方法创建数据对象的时候,不在定义范围内的属性将直接丢弃,避免表单提交非法数据。
insertFields 和 updateFields属性的设置采用字符串(逗号分割多个字段)或者数组的方式。
设置的字段应该是实际的数据表字段,而不受字段映射的影响。例如:
namespace Home\Model;
class UserModel extends \Think\Model{
protected $insertFields = array('account','password','nickname','email');
protected $updateFields = array('nickname','email');
}
定义后,调用add方法写入用户数据的时候,只能写入'account','password','nickname','email'
这几个字段,编辑的时候只能更新'nickname','email'
两个字段。
在使用的时候,我们调用create方法的时候,会根据提交类型自动识别insertFields和updateFields属性:
D('User')->create();
二、直接调用field方法
如果不想定义insertFields和updateFields属性,可以在调用create方法之前直接调用field方法,例如,实现和上面的例子同样的作用: 在新增用户数据的时候,使用:
M('User')->field('account,password,nickname,email')->create();
而在更新用户数据的时候,使用:
M('User')->field('nickname,email')->create();
这里的字段也是实际的数据表字段。
field方法也可以使用数组方式。
使用字段合法性检测后,你不再需要担心用户在提交表单的时候注入非法字段数据了。
最新文章
- BZOJ 1010: [HNOI2008]玩具装箱toy [DP 斜率优化]
- memcache的最佳实践方案
- JS汉语转拼音脚本
- python中的浅拷贝和深拷贝
- Redis学习笔记2-使用 Redis 作为 LRU 缓存
- C#获取HTML文件指定DIV内容
- Third scrum meeting - 2015/10/28
- html5,表格
- cvc-complex-type.2.4.a: Invalid content was found starting with element
- Spring 声明式事务,propagation属性列表及isolation(隔离级别)
- 《Publish or Perish》——从某种角度来说,我们也算和世界同步了呢。
- Linux命令 文件的建立移动删除
- Neo4j之坑
- Leetcode 226. Invert Binary Tree(easy)
- 使用ILSpy软件反编译.Net应用程序的方法及注意事项
- POJ 3713 Transferring Sylla【Tarjan求割点】
- js 定时更改div背景图片
- PID控制器(比例-积分-微分控制器)- III
- div界面浮动插件
- Perl CGI编程
热门文章
- Java HashMap问题
- Python文件路径操作
- Yii2 Composer
- tarjan求强连通+缩点——cf1248E
- 2018—2019—2 20165239《网络对抗技术》Exp7 网络欺诈防范
- (转)秒懂,Java 注解 (Annotation)你可以这样学 ---- 重要 注解定义与反射解析
- (转)短信vs.推送通知vs.电子邮件:app什么时候该用哪种方式来通知用户?
- undefined reference to `mysql_init'解决办法
- python 参数定义库argparse
- jsp2自定义标签开篇