php获取完整url
发布日期: 2024-05-01
FontSize: 【小 中 大】

php获取完整的url地址
需要用到$_SERVER变量,$_SERVER是php预定变量之一,注意,该变量区分大小写,不要写成$_server。
简单的写法就是:
"http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
正常情况下,如果您的使用的协议是http,这个就能满足了,如果需要更完整一些,需要判断使用的协议是http还是https。
$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http";
如果端口是非标准端口,还是加上获取端口。
$_SERVER['SERVER_PORT'];//获取端口号
在线示例:
<?php
print_r("<pre>");
$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http";
echo '协议: ',$protocol,'<br>';
echo '$_SERVER[\'HTTP_HOST\']: ',$_SERVER['HTTP_HOST'],'<br>';
echo '$_SERVER[\'REQUEST_URI\']: ',$_SERVER['REQUEST_URI'],'<br>';
$url = $protocol . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
echo '完整URL: ',$url,'<br>';
echo '完整URL带port: ',$protocol . "://" . $_SERVER['HTTP_HOST'].':'.$_SERVER['SERVER_PORT'] . $_SERVER['REQUEST_URI'];
$_SERVER变量一览表
元素 | 说明与示例 |
---|---|
$_SERVER['SERVER_PROTOCOL'] | 表示当前请求使用的服务器协议,例如:HTTP/1.1。 |
$_SERVER['HTTP_HOST'] | 用于获取客户端发送的 HTTP 请求中的 Host 头部信息,即主机名部分。例如:z.lichil.com |
$_SERVER['SERVER_PORT'] | 它表示客户端请求到达服务器时使用的端口号。HTTP协议默认使用80端口,而HTTPS协议默认使用443端口。例如:80。 |
$_SERVER['PHP_SELF'] | 当前执行脚本的文件名,例如:/li/test.php。 |
$_SERVER['SERVER_ADDR'] | 表示当前运行脚本所在服务器监听的IP地址,例如:127.0.0.1(本地测试IP)。 |
$_SERVER['REMOVE_ADDR'] | 浏览当前页面的用户IP地址,例如:127.0.0.1注意与$_SERVER['SERVER_ADDR']的区别,因为是本地测试,所以这两个值是相同的。 |
$_SERVER['SERVER_NAME'] | 当前运行脚本所在服务器的主机名。例如:localhost(本地测试),取决于URL中的域名,本地测试也有可能是127.0.0.1。 |
$_SERVER['REQUEST_TIME'] | 它表示请求开始时的时间戳。时间戳是以秒为单位的整数,表示从协调世界时(UTC)1970年1月1日00:00:00开始的秒数。例如,1706062292。我们经常会使用它或time()来获取当前时间,请注意它们之间的区别。 |
$_SERVER['REQUEST_METHOD'] | 它表示当前请求使用的HTTP方法。常见的HTTP方法包括GET、POST、PUT、DELETE等,例如:GET(常见)。 |
$_SERVER['DOCUMENT_ROOT'] | 当前运行脚本所在的文档根目录。在服务器配置文件中定义,例如:E:/phps/WWW。 |
$_SERVER['HTTP_USER_AGENT'] | 它表示客户端(如浏览器)发送请求时的用户代理字符串。用户代理字符串通常包含有关客户端浏览器或应用程序的信息,如名称、版本、操作系统等。例如:Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0。 |
$_SERVER['SCRIPT_FILENAME'] | 当前执行脚本的绝对路径。例如:E:/php/WWW/li/test.php。 |
$_SERVER['SCRIPT_NAME'] | 它表示当前执行脚本的路径和文件名。这个路径和文件名通常是相对于Web服务器的文档根目录的,例如:/li/test.php。 |
$_SERVER['QUERY_STRING'] | 用于存储 HTTP 请求中的查询字符串,查询字符串是一个 URL 中问号(?)后面的部分。例如:key=hello%20world。 |
$_SERVER['REQUEST_URI'] | 它表示客户端发送请求时的完整URI(统一资源标识符)。URI通常包括查询字符串(如果有的话),并且可能包含特殊字符和编码。例如:/li/test.php?key=hello%20world。 |
$_SERVER['HTTP_ACCEPT'] | 它表示客户端(如浏览器)支持的MIME类型。这个信息通常是通过HTTP请求头部的Accept字段发送的。例如:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8 |
$_SERVER['HTTP_ACCEPT_LANGUAGE'] | 它表示客户端(如浏览器)支持的自然语言集。这个信息通常是通过HTTP请求头部的Accept-Language字段发送的。例如:zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 |
上面并非$_SERVER的全部,如果想了解更多,可以使用print_r打印变量。
print_r($_SERVER);