PHP常用预定义变量与$_SERVER详解
在PHP Web开发中,正确理解和使用预定义变量是处理用户请求与服务器环境的基础。其中,$_SERVER 作为超级全局数组,封装了由Web服务器创建的路径、头部及脚本位置信息。本文系统整理高频使用的预定义常量(如 PHP_OS、__FILE__)及 $_SERVER 核心键值,并提供实际代码示例,帮助用户精准提取URL、IP、请求方法及认证信息等数据。
基础内置常量与环境识别
除了接收请求的数组外,PHP还提供了一些基础的预定义常量,用于快速获取脚本运行时的静态环境信息。
PHP_OS:返回当前服务器的操作系统名称。PHP_VERSION:返回当前运行的PHP版本字符串。__FILE__:返回当前执行脚本的完整路径和文件名。
<?php
echo "当前操作系统: " . PHP_OS . "<br/>";
echo "当前PHP版本: " . PHP_VERSION . "<br/>";
echo "本文件路径为:" . __FILE__ . "<br />";
?>
$_SERVER 数组详解
$_SERVER 是一个包含头部(headers)、路径(paths)和脚本位置(script locations)的数组。它是自动全局变量,在所有作用域中直接可用。需要注意的是,并非所有Web服务器都会提供列表中所有的变量,且部分信息依赖于客户端或服务器配置。
第1步:识别脚本与URL结构
目的:确定当前执行的脚本文件及其在文档根目录下的相对路径,常用于生成指向自身的链接。
PHP_SELF:当前正在执行脚本的文件名,与document root相关。例如URL为http://example.com/test.php/foo.bar时,该值为/test.php/foo.bar。若在命令行模式下运行,此变量无效。SCRIPT_NAME:包含当前脚本的路径,适用于需要知道脚本真实位置的场景。REQUEST_URI:访问此页面所需的URI,例如/index.html。DOCUMENT_ROOT:当前运行脚本所在的文档根目录,通常在服务器配置文件中定义。
示例:构造当前完整URL
若需获取当前页面的完整URL地址(含域名),可组合使用以下变量:
$url_this = "http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
echo $url_this;
// 输出示例: http://localhost/lu.php
第2步:获取客户端网络与代理信息
目的:识别访问者的网络环境,常用于日志审计、防作弊或地域限制。
REMOTE_ADDR:正在浏览当前页面用户的IP地址。REMOTE_PORT:用户连接到服务器时所使用的端口号。HTTP_USER_AGENT:当前请求的 User-Agent 头部内容,标识访问者的浏览器及操作系统类型。例如:Mozilla/4.5 [en] (X11; U; Linux ...)。也可配合get_browser()函数进行更详细的解析。HTTP_REFERER:链接到当前页面的前一页面的URL。**注意**:此变量不可靠,因为并非所有浏览器都会发送,且可能被用户手动修改或通过脚本伪造,切勿用于关键的安全验证。
第3步:解析HTTP协议与请求方法
目的:根据HTTP协议的规范处理不同的请求类型和协议版本。
SERVER_PROTOCOL:请求页面时通信协议的名称和版本,如"HTTP/1.0"或"HTTP/1.1"。REQUEST_METHOD:访问页面时的请求方法,常见的有"GET"、"POST"、"PUT"或"HEAD"。若请求方式为HEAD,PHP脚本将在送出头信息后中止,不再产生后续输出。QUERY_STRING:查询字符串,即URL中第一个问号(?)之后的内容。REQUEST_TIME:请求开始时的Unix时间戳。自PHP 5.1.0起有效。
第4步:读取客户端Accept请求头
目的:了解客户端能接受的数据格式、语言及编码方式,以支持多语言或多格式响应。
HTTP_ACCEPT:当前请求的Accept头部内容。HTTP_ACCEPT_CHARSET:Accept-Charset头部,如"iso-8859-1,*,utf-8"。HTTP_ACCEPT_ENCODING:Accept-Encoding头部,如"gzip"。HTTP_ACCEPT_LANGUAGE:Accept-Language头部,如"en"。HTTP_CONNECTION:Connection头部,如"Keep-Alive"。HTTP_HOST:当前请求的Host头部内容,通常用于虚拟主机识别。
第5步:认证与其他特殊变量
在需要HTTP基本认证的场景下,可使用以下变量:
PHP_AUTH_USER:当PHP运行在Apache模块方式并启用HTTP认证时,包含用户输入的用户名。PHP_AUTH_PW:对应的用户密码。AUTH_TYPE:认证的类型。
此外,还有 GATEWAY_INTERFACE(CGI规范版本)、SERVER_SOFTWARE(服务器软件标识)、SERVER_NAME(服务器主机名)以及 SCRIPT_FILENAME(执行脚本的绝对路径)等辅助变量。
以上就是PHP预定义变量与$_SERVER参数的详细内容,更多关于PHP服务器环境变量资料的关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









