当前位置: 首页 > 后端技术 > PHP

PHP的$_SERVER详解

时间:2023-03-29 22:49:42 PHP

介绍$_SERVER是PHP中预定义的超全局变量。所谓的“超全局变量”可以在脚本的所有范围内使用,$_SERVER保存有关标题、路径和脚本位置的信息。工作中经常忘记,所以在这里整理记录一下,加深印象。测试在Windows下进行,环境为Apache/2.4.23(Win32)+PHP/5.6.27-nts,访问域名为http://www.example.com/index....,文件目录在E:/WWW/example/。主要内容详解$_SERVER["SCRIPT_NAME"]=>"/index.php",当前脚本路径$_SERVER["REQUEST_URI"]=>"/index.php?id=1",访问页面URI,包括查询字符String$_SERVER["QUERY_STRING"]=>"id=1",查询字符串不存在为""$_SERVER["REQUEST_METHOD"]=>"GET",请求方式如"POST","PUT"等$_SERVER["SERVER_PROTOCOL"]=>"HTTP/1.1",通信协议的名称和版本$_SERVER["GATEWAY_INTERFACE"]=>"CGI/1.1",协议的版本服务器使用的CGI规范$_SERVER["REMOTE_PORT"]=>"60599",用户连接服务器使用的端口$_SERVER["SCRIPT_FILENAME"]=>"E:/WWW/example/index.php",当前脚本文件的绝对路径$_SERVER["DOCUMENT_ROOT"]=>"E:/WWW/example/",当前脚本文件根目录的绝对路径$_SERVER["REMOTE_ADDR"]=>"127.0.0.1",用户的IP地址$_SERVER["SERVER_PORT"]=>"80",服务器使用的端口$_SERVER["SERVER_ADDR"]=>"127.0.0.1",服务器的IP地址$_SERVER["SERVER_NAME"]=>"www.example.com",服务器的主机名,注意:如果脚本运行在虚拟机上主机,名称由为该虚拟主机设置的值确定。在Apache2中,必须设置UseCanonicalName=On和ServerName。否则该值将由客户提供并可能被伪造。在上下文具有安全要求的环境中,不应依赖此值。$_SERVER["SERVER_SOFTWARE"]=>"Apache/2.4.23(Win32)OpenSSL/1.0.2jmod_fcgid/2.3.9",响应头中Server的内容$_SERVER["SERVER_SIGNATURE"]=>"",包含服务器版本和虚拟主机名的字符串$_SERVER["HTTP_HOST"]=>"www.example.com",请求头中Host项的内容$_SERVER["HTTP_CONNECTION"]=>"keep-alive",请求头Connection项的内容$_SERVER["HTTP_PRAGMA"]=>"no-cache",请求头Pragma项的内容$_SERVER["HTTP_CACHE_CONTROL"]=>"no-cache",请求头中的Cache-Control项Content$_SERVER["HTTP_UPGRADE_INSECURE_REQUESTS"]=>"1",请求头中Upgrade-Insecure-Requests项的内容$_SERVER["HTTP_USER_AGENT"]=>"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/61.0.3163.100Safari/537.36",请求头中User-Agent项的内容$_SERVER["HTTP_ACCEPT"]=>"文本/html,应用程序/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8",请求头中Accept项的内容$_SERVER["HTTP_ACCEPT_ENCODING"]=>"gzip,deflate",请求头中Accept-Encoding项的内容$_SERVER["HTTP_ACCEPT_LANGUAGE"]=>"zh-CN,zh;q=0.8",请求头中Accept-Language项的内容$_SERVER["PHP_SELF"]=>"/index.php",当前执行脚本的文件名$_SERVER["REQUEST_TIME_FLOAT"]=>1510112348.8084,请求开始的时间戳,微秒级精度$_SERVER["REQUEST_TIME"]=>1510112348,请求开始的时间戳实例以上是$_SERVER在测试中的主要内容,根据不同的环境配置会有一些变化,在实际工作中,$_SERVER有很多作用,这里只是两个简单的例子获取当前请求的URL和简单的防盗链