phalcon-进阶篇1(过滤与清理)

#phalcon-进阶篇1(过滤与清理)#php

本教程基于phalcon2.0.9版本html

##前言## 先在这里感谢各位phalcon技术爱好者,咱们提供这样一个优秀的交流平台前端

最后一次更新已通过去了1个半月,在期间也有不少热心的童鞋询问何时会更新,最近应为去录制phalapi的视频还有工做上的事情比较忙因此有些耽搁这里给各位小伙伴道个歉,后面争取每周一篇尽早完结phalcon的视频教程.那么相信学习了入门篇9节的童鞋基本想用phalcon来写一些本身的东西已经没有什么问题了,可是还记得我说的吗?phalcon有不少有意思的地方,别急这些都会在咱们的进阶篇中一一讲解,那么咱们今天的内容就是过滤和清理!git

注:笔者水平有限,说的不正确的地方但愿你们多多指正,一同交流技术数据库

附上:api

喵了个咪的博客:http://w-blog.cn函数

教程代码库:http://git.oschina.net/wenzhenxi/Phalcon-tutorialpost

phalcon官网地址:https://phalconphp.com学习

phalcon中文社区:http://www.iphalcon.cn/this

##1. 清理##

咱们先说清理,清理和有一件事情比较类似打电话,在打电话和别人交谈的时候咱们会作些什么呢,咱们会获取对咱们有用的信息,屏蔽掉那些杂音,那么对于程序来讲有用的东西是什么呢?,咱们看下面一组例子:

  1. some(one)@exa\mple.com
  2. hello<<
  3. !100a019
  4. !100a019.01a

你们是否是以为很奇怪,第一个像email可是有括号,第二个是字符串可是有<号,第三个和第四个像数字可是有符号和字母,有的时候若是前端没有作参数校验,或者是直接请求接口很容易出现这类状况,可是这类状况到了数据库中就会出现问题,email发布出去,显示出来的名字很奇怪,数字到了数据库中是0等等这些状况就出现来,咱们看看phalcon怎么应对这些问题:

<?php

use Phalcon\Filter;
$filter = new Filter();

// 返回 "someone@example.com"
$filter->sanitize("some(one)@exa\mple.com", "email");

// 返回 "hello"
$filter->sanitize("hello<<", "string");

// 返回 "100019"
$filter->sanitize("!100a019", "int");

// 返回 "100019.01"
$filter->sanitize("!100a019.01a", "float");

是否是很好用啊?这样就能够解决上面遇到的这些问题,固然这个是单独的组件使用,若是用在控制器中有更简单的使用方式:

public function saveAction()
    {
        // 获取post参数key为price的值而且使用double类型清理
        $price = $this->request->getPost("price", "double");

        // 获取post参数key为customerEmail的值而且使用email类型清理
        $email = $this->request->getPost("customerEmail", "email");
    }

##2. 过滤##

说完了清理咱们在来说讲过滤,过滤和清理不一样的在于他们解决的问题不一样,过滤能够理解为高级的清理,咱们仍是看个例子:

有的时候只但愿去掉html标签符号,或者字符串只但愿去除先后的空格而不去掉其余符号就能够用一下的方式 <?php

use Phalcon\Filter;

$filter = new Filter();

// 返回 "Hello"
$filter->sanitize("<h1>Hello</h1>", "striptags");

// 返回 "Hello"
$filter->sanitize("  Hello   ", "trim");

过滤大部分都是为了知足自定义类型居多,好比md5的验证ip的验证还有一些关键ID,咱们能够定义咱们本身的过滤类型

<?php

use Phalcon\Filter;

$filter = new Filter();

// 使用匿名函数
$filter->add('md5', function ($value) {
    return preg_replace('/[^0-9a-f]/', '', $value);
});

// 利用md5过滤器清理
$filtered = $filter->sanitize($possibleMd5, "md5");

或者,若是你愿意,你能够在类中实现过滤器:

<?php

use Phalcon\Filter;

class IPv4Filter
{
    public function filter($value)
    {
        return filter_var($value, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4);
    }
}

$filter = new Filter();

// 使用对象
$filter->add('ipv4', new IPv4Filter());

// 利用"ipv4"过滤器清理
$filteredIp = $filter->sanitize("127.0.0.1", "ipv4");

##3. 小结##

今天的内容就到这里了,实例代码也会随之上传,感兴趣的童鞋能够下下来运行试试,那么感谢你们的支持,喜欢的话能够关注个人博客哦!

注:笔者能力有限有说的不对的地方但愿你们可以指出,也但愿多多交流!

Phalcon技术交流:364520707 PhalCon中文社区:287484785 欢迎你们的加入!

相关文章
相关标签/搜索