获取当前主机、域名、网址、路径、端口和参数等

判断请求协议(http还是https)

$http_type= ((isset($_SERVER['HTTPS'])&& $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') || (isset($_SERVER['HTTP_FRONT_END_HTTPS']) && $_SERVER['HTTP_FRONT_END_HTTPS'] == 'on')) ? 'https://' : 'http://';
$_SERVER['REQUEST_SCHEME'];这个也可以,不过部分环境不支持.
$_SERVER文档 对REQUEST_SCHEME没有描述,
所以REQUEST_SCHEME只在部分环境中适合使用,要么改环境,让环境适配代码(具体实现,自己百度.推荐使用第一种方法)

测试URL(本机虚拟主机添加的虚拟域名):http://www.qingfeng.com/index.php/index/index.html?name=Bob&age=25

$_SERVER['HTTP_HOST'] => www.qingfeng.com #当前请求头中 Host: 项的内容,如果存在的话。可以理解为域名
$_SERVER['PHP_SELF'] => /index.php/index/index/index.html #当前执行脚本的文件名,与 document root有关
$_SERVER["QUERY_STRING"] => name=Bob&age=25 #(查询字符串),如果有的话,通过它进行页面访问。
$_SERVER["SERVER_PORT"] => 80  # Web服务器使用的端口
$_SERVER['SERVER_NAME'] => www.qingfeng.com #当前运行脚本所在的服务器的主机名。如果脚本运行于虚拟主机中,该名称是由那个虚拟主机所设置的值决定。
$_SERVER['SERVER_ADDR'] => 127.0.0.1 #当前运行脚本所在的服务器的 IP 地址。
$_SERVER['REMOTE_ADDR'] => 127.0.0.1 #浏览当前页面的用户的 IP 地址。
$_SERVER['REQUEST_URI'] => /index.php/index/index/index.html?name=Bob&age=25 #URI 用来指定要访问的页面
$_SERVER['SCRIPT_NAME'] => /index.php #包含当前脚本的路径。这在页面需要指向自己时非常有用。__FILE__ 常量包含当前脚本(例如包含文件)的完整路径和文件名。
$_SERVER['PATH_INFO'] => /index/index/index.html #包含由客户端提供的、跟在真实脚本名称之后并且在查询语句(query string)之前的路径信息,如果存在的话

把默认端口(http为80,https为443)改为其他非默端口,如8080 http://www.qingfeng.com:8080/index.php/index/index.html?name=Bob&age=25

$_SERVER['HTTP_HOST'] => www.qingfeng.com:8080
$_SERVER['PHP_SELF'] => /index.php/index/index/index.html
$_SERVER["QUERY_STRING"] => name=Bob&age=25
$_SERVER["SERVER_PORT"] => 8080
$_SERVER['SERVER_NAME'] => www.qingfeng.com
$_SERVER['SERVER_ADDR'] => 127.0.0.1
$_SERVER['REMOTE_ADDR'] => 127.0.0.1
$_SERVER['REQUEST_URI'] => /index.php/index/index/index.html?name=Bob&age=25
$_SERVER['SCRIPT_NAME'] => /index.php
$_SERVER['PATH_INFO'] => /index/index/index.html

根据上面的对比,可以发现

HTTP_HOST和SERVER_NAME是有区别的

在默认端口时候,可以认为HTTP_HOST = SERVER_NAME是相等的

在非默认端口时候,HTTP_HOST = SERVER_NAME : SERVER_PORT

推荐使用HTTP_HOST

你可能感兴趣的:(PHP)