php 入库验证,mayfish 数据入库验证代码
一般在把数据写入数据库之前,先对将要写入的数据进行校验,可以避免出现比较严重的安全问题(例如一般性的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 数据入库验证代码相关推荐
- 飞鸽传书mayfish 数据入库验证
我飞鸽传书专门为大家转载最新技术文档,谢谢!来自 YAGAS 的原创作品: 一般在把数据写入数据库之前,先对将要写入的数据进行校验,可以避免出现比较严重的安全问题(例如一般性的SQL注入攻击). ma ...
- 农村土地确权之数据入库 —— 苍穹软件数据入库说明
想要获取更多关于土地确权的专业知识,可加入土地确权专业交流群(256956756). 1. 四个信息表的数据整理 (1)发包方信息表 Ø 发包方编码(14位)及发包方名称:严格按照<一标段发包 ...
- WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证
一.通过代码实现数据绑定 通过代码实现数据绑定,使用的是System.Windows.Data命名空间的Binding类,主要使用Binding类的如下的属性: Source属性:绑定到的数据源 Mo ...
- 每日生产万亿消息数据入库,腾讯如何突破大数据分析架构瓶颈
背景介绍 对于腾讯庞大的大数据分析业务,几千台的 Hadoop 集群,近百 P 级的存储总量,每日产生万亿的消息数据入库,需要针对几十亿 IMEI 手机设备去重,并关联数千亿的历史全表,进行曝光.点击 ...
- ArcGIS Pro如何实现已入库二维数据生成三维模型
ArcGIS Pro如何实现已入库二维数据生成三维模型 二维要素是否带高程Z判断 如何判断要素是否带有高程Z信息 : 二维要素进行三维的展示 二维要素生成三维模型 常规状态下已入库的数据一般是二维的点 ...
- php ci提交表单验证,ci表单验证代码
概述 这是只考虑php对表单数据的接收处理.至于js部分以前会结合validate来讲解下 在解释 CodeIgniter 的数据验证处理之前,让我们先描述一下一般的情况: 一个表单显示了. 你填写并 ...
- .NET Core开发实战(第17课:为选项数据添加验证:避免错误配置的应用接收用户流量)--学习笔记...
17 | 为选项数据添加验证:避免错误配置的应用接收用户流量 三种验证方法 1.直接注册验证函数 2.实现 IValidateOptions 3.使用 Microsoft.Extensions.Opt ...
- oracle连接外部数据库_使用Oracle验证外部数据
oracle连接外部数据库 我经常在Corda Slack频道中闲逛,并尽可能回答问题. 我尝试回答的合理数量的问题与Oracle有关. 更具体地说,何时使用. 我觉得我可以回答,"当您需要 ...
- 使用Oracle验证外部数据
我经常在Corda Slack频道中闲逛,并尽可能回答问题. 我尝试回答的合理数量的问题与Oracle有关. 更具体地说,何时使用一个. 我觉得我可以回答,"当您需要验证可能经常更改的外部数 ...
- ajax中怎么验证data,我应该在jQuery的ajax成功处理程序中验证响应数据吗?
假设我有一个后AJAX调用,我想将返回的数据放入一些HTML元素中. $.post(settings.url, function(data) { $('#someElement').text(data ...
最新文章
- linux cpu %us,Linux top里面%CPU和us%的解释
- 机器学习入门学习笔记:(2.1)线性回归理论推导
- python 正则表达式 re (.*?)和(.*)的区别(贪婪模式非贪婪模式)惰性匹配
- 武未转变服务器tp,未转变者怎么tp别人 | 手游网游页游攻略大全
- CSS属性和值--备份
- Ubuntu 16.04安装Docker-Compose 与 Can't connect to docker from docker-compose
- 龙格库塔算法原理详解
- SAI颈部正面的画法
- B站CEO陈睿:我们活跃用户仍维持高增长 动能是独特优质内容
- 3D游戏编程作业10
- 高价拍下巴菲特午餐的90后孙宇晨是谁?
- Css3中添加-moz-, -webkit-, -o-,是什么意思呢?
- 我的十余年职业生涯之路
- python 求平面两点距离_Python求平面内点到直线距离的实现
- apmserv mysql5.1启动失败_使用APMServ时出现“1、Apache启动失败,请检查相关配置。√MySQL5.1已启动。”错误的终极解决办法:...
- NFT协议标准梳理:除了ERC721和ERC1155,还有哪些?
- Transformer解读之:Transformer 中的 Attention 机制
- upload-labs安装及攻略
- 北京六天十次面试,已拿到offer,面试题和总结分享(Java岗)
- Pandas数据处理误区要知其然知其所以然