当前位置:  首页>> 技术小册>> PHP合辑2-高级进阶

PHP Filter是一个扩展,用于通过净化或验证来过滤数据。它在网站的安全性方面起着至关重要的作用,尤其在数据来自未知或外部源时非常有用,例如用户提供的输入。例如来自HTML表单的数据。

以下列出了两种主要的过滤器类型:

Validation:用于验证或检查数据是否满足特定条件。例如,传递FILTER_VALIDATE_URL将确定数据是否为有效的URL,但它不会自行更改现有数据。

Sanitization:与验证不同,净化将通过删除或更改数据来确保没有不需要的字符。例如,传递FILTER_SANITIZE_EMAIL将删除所有不适合电子邮件地址包含的字符。但是,它不验证数据。

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

  1. <?php
  2. // PHP program to validate URL
  3. // Declare variable and initialize it to URL
  4. $url = "https://www.maxiaoke.com";
  5. // Use filter function to validate URL
  6. if (filter_var($url, FILTER_VALIDATE_URL)) {
  7. echo "valid URL";
  8. } else {
  9. echo "Invalid URL";
  10. }
  11. ?>

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

  1. <?php
  2. // PHP program to validate email
  3. // Declare variable and initialize it to email
  4. $email = "xyz@gmail.com";
  5. // Use filter function to validate email
  6. if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
  7. echo "Valid Email";
  8. } else {
  9. echo "Invalid Email";
  10. }
  11. ?>

示例3:使用FILTER_SANITIZE_EMAIL过滤器进行电子邮件净化的PHP程序。

  1. <?php
  2. // PHP program to sanitize an email
  3. // Declare variable and initialize it
  4. // to an email with illegal characters
  5. $email = "user@geeksforgeeks.org";
  6. // Sanitize the email using the FILTER_SANITIZE_EMAIL filter
  7. $sanitizedEmail = filter_var($email, FILTER_SANITIZE_EMAIL);
  8. // Output the sanitized email
  9. echo "Sanitized Email: " . $sanitizedEmail;
  10. ?>

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

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

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

Validate filter constants

  • FILTER_VALIDATE_BOOLEAN:验证布尔值。
  • FILTER_VALIDATE_INT:验证整数。
  • FILTER_VALIDATE_FLOAT:验证浮点数。
  • FILTER_VALIDATE_REGEXP:验证正则表达式。
  • FILTER_VALIDATE_IP:验证IP地址。
  • FILTER_VALIDATE_EMAIL:验证电子邮件地址。
  • FILTER_VALIDATE_URL:验证URL。

Sanitize filter constants:

  • 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:从URL中删除所有非法字符

该分类下的相关小册推荐: