PHP如何使用过滤器和过滤器常数?

2021年3月20日16:37:11 发表评论 637 次浏览

PHP Filter是一个扩展, 可通过清理或验证数据来过滤数据。它在网站安全中起着至关重要的作用, 尤其是当数据来自未知或外部来源(例如用户提供的输入)时, 此功能特别有用。例如, 来自HTML表单的数据。

主要有以下两种类型的过滤器:

  • 验证:用于验证或检查数据是否符合某些条件。例如, 传递FILTER_VALIDATE_URL将确定数据是否为有效的url, 但不会自行更改现有数据。
  • 消毒:与验证不同, 清理将对数据进行清理, 以便通过删除或更改数据来确保没有不想要的字符。例如, 传递FILTER_SANITIZE_EMAIL将删除所有不适合包含电子邮件地址的字符。也就是说, 它不会验证数据。

范例1:PHP程序使用FILTER_VALIDATE_URL过滤器来验证URL。

<?php
// PHP program to validate URL
  
// Declare variable and initialize it to URL
$url = "https://www.lsbin.org" ;
  
// Use filter function to validate URL
if (filter_var( $url , FILTER_VALIDATE_URL)) {
     echo ( "valid URL" );
} 
else {
     echo ( "Invalid URL" );
}
  
?>

范例2:PHP程序使用FILTER_VALIDATE_EMAIL过滤器来验证电子邮件。

<?php
// PHP program to validate email
  
// Declare variable and initialize it to email
$email = "xyz@gmail.com" ;
  
// Use filter function to validate email
if (filter_var( $email , FILTER_VALIDATE_EMAIL)) {
     echo "Valid Email" ;
} 
else {
     echo "Invalid Email" ;
}
  
?>

过滤功能:过滤功能用于过滤来自不安全来源的数据。

  • filter_var():过滤特定变量
  • filter_var_array():过滤多个变量, 即变量数组
  • filter_has_var():检查特定输入类型的变量是否存在
  • filter_id():帮助获取指定过滤器名称的过滤器ID
  • filter_list():以数组形式返回受支持的过滤器名称的列表。
  • filter_input():获取一个外部变量并对其进行过滤(如果设置为这样做的话)。
  • filter_input_array():与filter_input()相同, 但在这里获取多个变量, 即变量数组, 并设置为过滤它们。

预定义的过滤器常数:下面列出了许多预定义的过滤器常数:

  • 验证过滤器常量:
    • FILTER_VALIDATE_BOOLEAN:验证布尔值
    • FILTER_VALIDATE_INT:验证整数
    • FILTER_VALIDATE_FLOAT:验证浮点数
    • FILTER_VALIDATE_REGEXP:验证正则表达式
    • FILTER_VALIDATE_IP:验证IP地址
    • FILTER_VALIDATE_EMAIL:验证电子邮件地址
    • FILTER_VALIDATE_URL:验证URL
  • 清理过滤器常量:
    • FILTER_SANITIZE_EMAIL:从电子邮件地址中删除所有非法字符
    • FILTER_SANITIZE_ENCODED:删除/编码特殊字符
    • FILTER_SANITIZE_MAGIC_QUOTES:应用addslashes()函数
    • FILTER_SANITIZE_NUMBER_FLOAT:删除所有字符, 除了数字, +-和可选的.e e
    • FILTER_SANITIZE_NUMBER_INT:删除除数字和+ –以外的所有字符
    • FILTER_SANITIZE_SPECIAL_CHARS:删除特殊字符
    • FILTER_SANITIZE_FULL_SPECIAL_CHARS可以使用FILTER_FLAG_NO_ENCODE_QUOTES禁用编码引号。
    • FILTER_SANITIZE_STRING:从字符串中删除标签/特殊字符
    • FILTER_SANITIZE_STRIPPED:FILTER_SANITIZE_STRING的别名
    • FILTER_SANITIZE_URL:从s网址中删除所有非法字符
  • 其他过滤器常数:
    • FILTER_UNSAFE_RAW:不执行任何操作, 可以选择去除/编码特殊字符
    • FILTER_CALLBACK:调用用户定义的函数来过滤数据

注意:默认情况下, PHP 5.2.0和更高版本中启用了PHP过滤器。安装需要较旧的版本。

参考: http://php.net/manual/en/filter.filters.sanitize.php


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: