mayfish 数据入库验证代码

前端之家收集整理的这篇文章主要介绍了mayfish 数据入库验证代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一般在把数据写入数据库之前,先对将要写入的数据进行校验,可以避免出现比较严重的安全问题(例如一般性的sql注入攻击)。
mayfish 可以灵活的自定义将要执行写入的数据内容的校验规则,以减少开发人员手动对每一个字段的数据进行校验的麻烦。
例子如下:

一、首先定义数据库模块


<div class="codetitle"><a style="CURSOR: pointer" data="21868" class="copybut" id="copybut21868" onclick="doCopy('code21868')"> 代码如下:
<div class="codebody" id="code21868">
<?PHP
class MemberModel extends AppModel
{
/ 设置数据库名称 /
protected $tableName = "members";
/
数据验证规则
/
protected $verify = array(
array("NotEmpty","username","用户名不能留空"),
array("hasOne","此用户已经存在,请换另一个用户名称再试一次"),
array("NotEmpty","password","密码不能留空"),"email","邮箱地址不能留空"),
array("isEmail","邮箱地址格式不正确"),"邮箱地址已经被占用")
);
/

覆盖父类添加数据入库的方法
先对用户密码进行md5加密,再调用父类方法写入数据库
*/
public function create($data) {
$data = array_map("addslashes",$data); //将数据中的标点符号(单、双引号)进行安全转义
$data["password"] = md5($data["password"]);
return parent::create($data);
}
}
?>

二、执行数据写入操作


<div class="codetitle"><a style="CURSOR: pointer" data="13582" class="copybut" id="copybut13582" onclick="doCopy('code13582')"> 代码如下:
<div class="codebody" id="code13582">
//执行写入数据的片段...
//执行数据入库的操作
private function PostData() {
$fields = array("username","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 下载

原文链接:https://www.f2er.com/php/28609.html

猜你在找的PHP相关文章