一般在把数据写入数据库之前,先对将要写入的数据进行校验,可以避免出现比较严重的安全问题(例如一般性的SQL注入攻击)。

mayfish 可以灵活的自定义将要执行写入的数据内容的校验规则,以减少开发人员手动对每一个字段的数据进行校验的麻烦。

例子如下:

一、首先定义数据库模块

class MemberModel extends AppModel

{

/** 设置数据库表名称 **/

protected $tableName = "members";

/**

* 数据验证规则

*/

protected $verify = array(

array("NotEmpty", "username", "用户名不能留空"),

array("hasOne", "username", "此用户已经存在,请换另一个用户名称再试一次"),

array("NotEmpty", "password", "密码不能留空"),

array("NotEmpty", "email", "邮箱地址不能留空"),

array("isEmail", "email", "邮箱地址格式不正确"),

array("hasOne", "email", "邮箱地址已经被占用")

);

/**

* 覆盖父类添加数据入库的方法

* 先对用户密码进行md5加密,再调用父类的方法写入数据库中

*/

public function create($data) {

$data = array_map("addslashes", $data); //将数据中的标点符号(单、双引号)进行安全转义

$data["password"] = md5($data["password"]);

return parent::create($data);

}

}

?>

二、执行数据写入操作

//执行写入数据的片段...

//执行数据入库的操作

private function PostData() {

$fields = array("username", "password", "email");

$post = array_map("trims", $_POST); //清除所有数据两边多余的空格

$post = parseHTML($post, $fields); //将指定的字段内容进行清除HTML处理

$data = parseFields($post, $fields); //提取可以写入数据库的字段(防止别人绕过你的页面进行提交一些别有用心的数据)

$DB = & M("member");

//进行数据验证

if (!$DB->verify($data)) {

//验证失败,取出失败的原因,并提交到模板页面中

$this->assign("error", $DB->getVerifyError());

//把提交过来的数据也提交到模板中(用以实现用户好像没有离开过页面的感觉)

$this->assign("default", $post);

//渲染注册页面模板

$this->display("/register.html");

}

else {

//写入数据库

$result = $DB->create($data);

//返回布尔型,说明数据写入失败,渲染注册页面模板

if (is_bool($result)) {

$this->assign("default", $post);

$this->display("/register.html");

}

else {

//注册成功,渲染注册成功页面模板

$this->assign("username", $data["username"]);

$this->display("/reg_success.html");

}

}

}

可执行验证的规则有

NotEmpty 不能为空

Number 只能是整数

isEmail 邮箱地址是否正确

hasOne 是否是唯一(是否重复,是否已经存在)

Regex 自定义正则表达式

验证的格式为

array(验证方法, 进行验证的字段名称, 验证错误的提示信息)

对于正则表达示的验证

array("Regex", "mobile", '/^13\d{9}$/', "用户名不能留空")

MayFish 下载

php 入库验证,mayfish 数据入库验证代码相关推荐

  1. 飞鸽传书mayfish 数据入库验证

    我飞鸽传书专门为大家转载最新技术文档,谢谢!来自 YAGAS 的原创作品: 一般在把数据写入数据库之前,先对将要写入的数据进行校验,可以避免出现比较严重的安全问题(例如一般性的SQL注入攻击). ma ...

  2. 农村土地确权之数据入库 —— 苍穹软件数据入库说明

    想要获取更多关于土地确权的专业知识,可加入土地确权专业交流群(256956756). 1. 四个信息表的数据整理 (1)发包方信息表 Ø  发包方编码(14位)及发包方名称:严格按照<一标段发包 ...

  3. WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证

    一.通过代码实现数据绑定 通过代码实现数据绑定,使用的是System.Windows.Data命名空间的Binding类,主要使用Binding类的如下的属性: Source属性:绑定到的数据源 Mo ...

  4. 每日生产万亿消息数据入库,腾讯如何突破大数据分析架构瓶颈

    背景介绍 对于腾讯庞大的大数据分析业务,几千台的 Hadoop 集群,近百 P 级的存储总量,每日产生万亿的消息数据入库,需要针对几十亿 IMEI 手机设备去重,并关联数千亿的历史全表,进行曝光.点击 ...

  5. ArcGIS Pro如何实现已入库二维数据生成三维模型

    ArcGIS Pro如何实现已入库二维数据生成三维模型 二维要素是否带高程Z判断 如何判断要素是否带有高程Z信息 : 二维要素进行三维的展示 二维要素生成三维模型 常规状态下已入库的数据一般是二维的点 ...

  6. php ci提交表单验证,ci表单验证代码

    概述 这是只考虑php对表单数据的接收处理.至于js部分以前会结合validate来讲解下 在解释 CodeIgniter 的数据验证处理之前,让我们先描述一下一般的情况: 一个表单显示了. 你填写并 ...

  7. .NET Core开发实战(第17课:为选项数据添加验证:避免错误配置的应用接收用户流量)--学习笔记...

    17 | 为选项数据添加验证:避免错误配置的应用接收用户流量 三种验证方法 1.直接注册验证函数 2.实现 IValidateOptions 3.使用 Microsoft.Extensions.Opt ...

  8. oracle连接外部数据库_使用Oracle验证外部数据

    oracle连接外部数据库 我经常在Corda Slack频道中闲逛,并尽可能回答问题. 我尝试回答的合理数量的问题与Oracle有关. 更具体地说,何时使用. 我觉得我可以回答,"当您需要 ...

  9. 使用Oracle验证外部数据

    我经常在Corda Slack频道中闲逛,并尽可能回答问题. 我尝试回答的合理数量的问题与Oracle有关. 更具体地说,何时使用一个. 我觉得我可以回答,"当您需要验证可能经常更改的外部数 ...

  10. ajax中怎么验证data,我应该在jQuery的ajax成功处理程序中验证响应数据吗?

    假设我有一个后AJAX调用,我想将返回的数据放入一些HTML元素中. $.post(settings.url, function(data) { $('#someElement').text(data ...

最新文章

  1. linux cpu %us,Linux top里面%CPU和us%的解释
  2. 机器学习入门学习笔记:(2.1)线性回归理论推导
  3. python 正则表达式 re (.*?)和(.*)的区别(贪婪模式非贪婪模式)惰性匹配
  4. 武未转变服务器tp,未转变者怎么tp别人 | 手游网游页游攻略大全
  5. CSS属性和值--备份
  6. Ubuntu 16.04安装Docker-Compose 与 Can't connect to docker from docker-compose
  7. 龙格库塔算法原理详解
  8. SAI颈部正面的画法
  9. B站CEO陈睿:我们活跃用户仍维持高增长 动能是独特优质内容
  10. 3D游戏编程作业10
  11. 高价拍下巴菲特午餐的90后孙宇晨是谁?
  12. Css3中添加-moz-, -webkit-, -o-,是什么意思呢?
  13. 我的十余年职业生涯之路
  14. python 求平面两点距离_Python求平面内点到直线距离的实现
  15. apmserv mysql5.1启动失败_使用APMServ时出现“1、Apache启动失败,请检查相关配置。√MySQL5.1已启动。”错误的终极解决办法:...
  16. NFT协议标准梳理:除了ERC721和ERC1155,还有哪些?
  17. Transformer解读之:Transformer 中的 Attention 机制
  18. upload-labs安装及攻略
  19. 北京六天十次面试,已拿到offer,面试题和总结分享(Java岗)
  20. Pandas数据处理误区要知其然知其所以然

热门文章

  1. Rockchip平台cpu散热风扇随温度自动调速的配置方法
  2. 十六进制转二进制c语言程序,c语言中十六进制转为二进制
  3. 冒险岛079单机/小范围联机游戏搭建
  4. Android静默安装实现方案,仿360手机助手秒装和智能安装功能
  5. 动易CMS 实现ctrl+v粘贴图片并上传、word粘贴带图片
  6. aspCMS后台getshell
  7. 计算机软件的制作过程,迅捷流程图制作软件
  8. GTK-sopcast 0.2.8
  9. autocad.net-图片打印合成
  10. 网络安全实验5 证书应用和证书管理