mayfish 数据入库验证代码
发布时间:2020-12-13 05:42:35 所属栏目:PHP教程 来源:网络整理
导读:一般在把数据写入数据库之前,先对将要写入的数据进行校验,可以避免出现比较严重的安全问题(例如一般性的SQL注入攻击)。 mayfish 可以灵活的自定义将要执行写入的数据内容的校验规则,以减少开发人员手动对每一个字段的数据进行校验的麻烦。 例子如下: 一
一般在把数据写入数据库之前,先对将要写入的数据进行校验,可以避免出现比较严重的安全问题(例如一般性的SQL注入攻击)。 一、首先定义数据库模块<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",'/^13d{9}$/',"用户名不能留空")MayFish 下载 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |