资讯专栏INFORMATION COLUMN

php 数据过滤

Tony_Zby / 3053人阅读

摘要:在对用户输入数据进行过滤时通常都是自己写方法进行判断比如验证邮箱的时候使用正则表达式邮件格式有误如果不用正则还有其它跟简单的方法吗使用相关函数是否存在指定类型的变量。获取多项变量,并进行过滤。

在对用户输入数据进行过滤时通常都是自己写方法进行判断
比如验证邮箱的时候使用正则表达式
$pattern = "/w+([-+."]w+)*@w+([-.]w+)*.w+([-.]w+)*/";
if (!preg_match($pattern, $email)) {
        throw new Exception(self::ERROR_PARAMETER_EMPTY . "_邮件格式有误:" . $email);
}

如果不用正则还有其它跟简单的方法吗?

使用filter相关函数
filter_has_var(type, variable) 是否存在指定类型的变量。
filter_input 从脚本外部获取输入,并进行过滤。
filter_input_array 从脚本外部获取多项输入,并进行过滤。
filter_var 获取一个变量,并进行过滤。
filter_var_array 获取多项变量,并进行过滤。
filter_has_var

判断$_GET 的结果是否包含name

if(!filter_has_var(INPUT_GET, "name"))
{
    echo("name 不存在");
}
else
{
    echo("name 存在");
}
filter_input

看一个验证邮箱的例子

if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))
{
    echo "E-Mail is not valid";
}
else
{
    echo "E-Mail is valid";
}
filter_input_array

对整个input源进行过滤

$filters = array
(
    "name" => array
    (
        "filter"=>FILTER_CALLBACK,
        "flags"=>FILTER_FORCE_ARRAY,
        "options"=>"ucwords"
    ),
    "age" => array
    (
        "filter"=>FILTER_VALIDATE_INT,
        "options"=>array
        (
            "min_range"=>1,
            "max_range"=>120
        )
    ),
    "email"=> FILTER_VALIDATE_EMAIL,
);
print_r(filter_input_array(INPUT_POST, $filters));
filter_var,filter_var_array

不需要input源,直接对值进行过滤

if(!filter_var("someone@example....com", FILTER_VALIDATE_EMAIL))
 {
 echo("E-mail is not valid");
 }
else
 {
 echo("E-mail is valid");
 }
input源的范围

验证

其它过滤方法
strip_tags 删除html标签
htmlentities 把字符转换为 HTML 实体,(还会把货币表示符号欧元英镑等、版权符号等转义)
htmlspecialchars 函数把预定义的字符转换为 HTML 实体。
预定义的字符是:
& (和号)成为 &
" (双引号)成为 "
" (单引号)成为 "
< (小于)成为 <
(大于)成为 >

*提示:如需把特殊的 HTML 实体转换回字符,请使用 htmlspecialcharsdecode() 函数。


$input = "我是标题";
echo htmlspecialchars($input) . "
";
echo htmlentities($input) . "
";
echo strip_tags($input) . "
";

$input = "-- "select * from ";
echo addslashes($input) . "
";

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29692.html

相关文章

  • PHP最佳实践之过滤、验证、转义和密码

    摘要:过滤验证和转义不要相信任何来自不受自己直接控制的数据源中的数据。加密和哈希不是一回事,加密是双向算法,加密的数据可以被解密。使用密码哈希简化计算密码哈希和验证密码的操作。密码的哈希值存储在类型的数据库列中。 过滤、验证和转义 1).不要相信任何来自不受自己直接控制的数据源中的数据。包括但不限于: $_GET $_POST $_REQUEST $_COOKIE $argv php://...

    HitenDev 评论0 收藏0
  • PHP伪协议总结

    摘要:参考了这篇文章伪协议实现命令执行的七种姿势,并根据自己理解进行了总结,也算是加深一下印象,方便以后使用。说明文件系统是使用的默认封装协议,展现了本地文件系统。允许直接访问指定的文件描述符。 参考了这篇文章:php伪协议实现命令执行的七种姿势,并根据自己理解进行了总结,也算是加深一下印象,方便以后使用。 file:// 协议 条件: allow_url_fopen:off/on...

    huaixiaoz 评论0 收藏0
  • php常用的安全过滤函数

    摘要:由于越来越多的项目开始使用框架,所以,很多的程序员也不在关心安全的问题因为框架已经帮我们几乎完美的处理了但是,个人认为,我们还是需要了解一下常用的安全处理函数原因简单很多小的功能和项目是用不到框架的,我们需要自己解决安全问题常用的安全函数有 由于越来越多的项目开始使用框架,所以,很多的程序员也不在关心安全的问题!因为框架已经帮我们几乎完美的处理了!但是,个人认为,我们还是需要了解一下常...

    niceforbear 评论0 收藏0
  • PHP数据过滤

    摘要:提交数据过滤的基本原则提交变量进数据库时,我们必须使用进行过滤,像我们的注入问题,一个也就搞定了。其实在涉及到变量取值时,函数对字符串的过滤也是个不错的选择。对于进出数据库的数据可以起到格式话的作用。简单的数据过滤入库出库显示 1、php提交数据过滤的基本原则 1)提交变量进数据库时,我们必须使用addslashes()进行过滤,像我们的注入问题,一个addslashes()也就搞定...

    e10101 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<