作者:cocoa果果_263 | 来源:互联网 | 2024-12-23 19:05
本文深入探讨了PHP中的过滤器机制,包括常见的$_SERVER变量、filter_has_var()函数、filter_id()函数、filter_input()函数及其数组形式、filter_list()函数以及filter_var()和其数组形式。同时,详细介绍了各种过滤器的用途和用法。
$_SERVER 变量详解
$_SERVER 是一个超全局变量,包含有诸如头信息(header)、路径(path)和脚本位置等信息。以下是一些常用的 $_SERVER 变量:
$_SERVER['HTTP_ACCEPT_LANGUAGE']
: 浏览器语言。$_SERVER['REMOTE_ADDR']
: 当前用户的 IP 地址。$_SERVER['REMOTE_HOST']
: 当前用户的主机名。$_SERVER['REQUEST_URI']
: URL 请求的 URI。$_SERVER['SERVER_NAME']
: 服务器主机名称。$_SERVER['REMOTE_PORT']
: 用户端口。$_SERVER['PHP_SELF']
: 正在执行脚本的文件名。$_SERVER['argv']
: 传递给该脚本的参数数组。$_SERVER['argc']
: 传递给程序的命令行参数个数。$_SERVER['GATEWAY_INTERFACE']
: CGI 规范版本。$_SERVER['SERVER_SOFTWARE']
: 服务器标识字符串。$_SERVER['SERVER_PROTOCOL']
: 请求页面时的通信协议名称和版本。$_SERVER['REQUEST_METHOD']
: 请求方法(如 GET、POST 等)。$_SERVER['QUERY_STRING']
: 查询字符串。$_SERVER['DOCUMENT_ROOT']
: 当前运行脚本所在的文档根目录。$_SERVER['HTTP_ACCEPT']
: Accept 头部内容。$_SERVER['HTTP_ACCEPT_CHARSET']
: Accept-Charset 头部内容。$_SERVER['HTTP_ACCEPT_ENCODING']
: Accept-Encoding 头部内容。$_SERVER['HTTP_CONNECTION']
: Connection 头部内容。$_SERVER['HTTP_HOST']
: Host 头部内容。$_SERVER['HTTP_REFERER']
: 前一页面的 URL 地址。$_SERVER['HTTP_USER_AGENT']
: User-Agent 头部内容。$_SERVER['HTTPS']
: 如果通过 HTTPS 访问,则返回非空值;否则返回 'off'。$_SERVER['SCRIPT_FILENAME']
: 当前执行脚本的绝对路径名。$_SERVER['SERVER_ADMIN']
: 管理员信息。$_SERVER['SERVER_PORT']
: 服务器使用的端口。$_SERVER['SERVER_SIGNATURE']
: 包含服务器版本和虚拟主机名的字符串。$_SERVER['PATH_TRANSLATED']
: 当前脚本所在文件系统的基本路径。$_SERVER['SCRIPT_NAME']
: 当前脚本的路径。$_SERVER['PHP_AUTH_USER']
: HTTP 认证用户名。$_SERVER['PHP_AUTH_PW']
: HTTP 认证密码。$_SERVER['AUTH_TYPE']
: HTTP 认证类型。
filter_has_var() 函数
filter_has_var()
函数用于检查指定输入类型的变量是否存在。如果存在则返回 TRUE, 否则返回 FALSE。例如:
filter_has_var(INPUT_GET, 'name');
filter_has_var(INPUT_POST, 'name');
filter_has_var(INPUT_COOKIE, 'name');
filter_has_var(INPUT_SERVER, 'name');
filter_has_var(INPUT_ENV, 'name');
filter_id() 函数
filter_id()
函数返回指定过滤器的 ID 号。如果成功则返回过滤器的 ID 号,如果过滤器不存在则返回 NULL。例如:
filter_id('FILTER_SANITIZE_STRING');
filter_input()
函数从外部获取输入并进行过滤。它用于验证来自非安全来源的变量,如用户输入。函数语法如下:
filter_input(input_type, variable, filter, options);
其中:
input_type
: 必需,规定输入类型(如 INPUT_GET, INPUT_POST 等)。variable
: 必需,规定要过滤的变量。filter
: 可选,规定要使用的过滤器 ID 或名称,默认是 FILTER_SANITIZE_STRING。options
: 可选,规定一个包含标志/选项的关联数组或单一标志/选项。
filter_input_array()
函数从外部获取多项输入并进行过滤,类似于 filter_input()
的数组形式。函数语法如下:
filter_input_array(input_type, filter_args);
其中:
input_type
: 规定外部输入需要过滤的数组。filter_args
: 可选,规定过滤器参数的数组,键名为变量名,值为过滤器 ID 或名称。
filter_list() 函数
filter_list()
函数返回所有可用过滤器的名称列表。例如:
$filters = filter_list(); print_r($filters);
filter_var() 函数
filter_var()
函数通过指定的过滤器过滤单个变量。如果成功则返回过滤后的数据,失败则返回 FALSE。函数语法如下:
filter_var(variable, filter, options);
其中:
variable
: 必需,规定要过滤的变量。filter
: 可选,规定要使用的过滤器 ID,默认是 FILTER_SANITIZE_STRING。options
: 可选,规定一个包含标志/选项的关联数组或单一标志/选项。
filter_var_array() 函数
filter_var_array()
函数获取多个变量并进行过滤,是 filter_var()
的数组形式。函数语法如下:
filter_var_array(array, args);
其中:
array
: 必需,规定带有字符串键名的数组,包含要过滤的数据。args
: 可选,规定过滤参数数组,键名为变量名,值为过滤器 ID。
PHP 过滤器
PHP 提供了一系列内置过滤器来处理不同类型的输入数据。以下是常见的过滤器:
FILTER_CALLBACK
: 调用用户自定义函数来过滤数据。FILTER_SANITIZE_STRING
: 去除标签并编码特殊字符。FILTER_SANITIZE_STRIPPED
: 别名为 "string" 过滤器。FILTER_SANITIZE_ENCODED
: URL 编码字符串并去除或编码特殊字符。FILTER_SANITIZE_SPECIAL_CHARS
: HTML 转义字符。FILTER_SANITIZE_EMAIL
: 删除无效字符,保留有效电子邮件字符。FILTER_SANITIZE_URL
: 删除无效字符,保留有效 URL 字符。FILTER_SANITIZE_NUMBER_INT
: 删除非数字字符,保留整数。FILTER_SANITIZE_NUMBER_FLOAT
: 删除非数字字符,保留浮点数。FILTER_SANITIZE_MAGIC_QUOTES
: 应用 addslashes()。FILTER_UNSAFE_RAW
: 不进行任何过滤。FILTER_VALIDATE_INT
: 验证整数。FILTER_VALIDATE_BOOLEAN
: 验证布尔值。FILTER_VALIDATE_FLOAT
: 验证浮点数。FILTER_VALIDATE_REGEXP
: 使用正则表达式验证。FILTER_VALIDATE_URL
: 验证 URL。FILTER_VALIDATE_EMAIL
: 验证电子邮件地址。FILTER_VALIDATE_IP
: 验证 IP 地址。