📅  最后修改于: 2023-12-03 15:07:45.795000             🧑  作者: Mango
在 Web 开发中,获取当前页面的 URL 是常见需求,在 PHP 中实现也很简单。本篇文章将介绍如何在 PHP 中获取完整的 URL。
PHP 中内置了一个名为 $_SERVER
的超全局数组,它包含了服务器运行环境的各种信息,包括当前页面的 URL。我们可以使用 $_SERVER['REQUEST_URI']
来获取当前页面的 URI,然后再获取当前页面的协议、主机名等信息,从而拼接成完整的 URL。
代码如下:
// 获取协议
$protocol = empty($_SERVER['HTTPS']) ? 'http://' : 'https://';
// 获取主机名
$host = $_SERVER['HTTP_HOST'];
// 获取当前页面的 URI
$uri = $_SERVER['REQUEST_URI'];
// 拼接成完整的 URL
$url = $protocol . $host . $uri;
以上代码中,我们首先通过判断 $_SERVER['HTTPS']
是否为空来确定请求的协议是 HTTP 还是 HTTPS。接着,通过 $_SERVER['HTTP_HOST']
获取主机名,再通过 $_SERVER['REQUEST_URI']
获取当前页面的 URI,最后将它们拼接起来即可得到完整的 URL。
除了方法 1,我们还可以使用 PHP 内置的 parse_url()
函数来解析当前页面的 URL,并获取其中的各个部分,最终拼接成完整的 URL。
代码如下:
// 获取当前页面的 URL
$url_parts = parse_url($_SERVER['REQUEST_URI']);
// 获取协议
$protocol = !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' ? 'https' : 'http';
// 获取主机名
$host = $_SERVER['HTTP_HOST'];
// 拼接成完整的 URL
$url = $protocol . '://' . $host . $url_parts['path'];
if (!empty($url_parts['query'])) {
$url .= '?' . $url_parts['query'];
}
以上代码中,我们首先通过 parse_url()
函数解析当前页面的 URL,然后分别获取其中的协议、主机名和路径等信息。最后根据这些信息将它们拼接起来即可得到完整的 URL。需要注意的是,如果 URL 中包含查询参数,还需要特殊处理。
还有一种获取完整 URL 的方法是使用 $_SERVER['HTTP_REFERER']
,该超全局变量会包含该页面被访问前的 URL。
代码如下:
$url = $_SERVER['HTTP_REFERER'];
以上代码中,我们直接使用 $_SERVER['HTTP_REFERER']
即可获取完整的 URL。需要注意的是,该方法有时会受到浏览器设置的 Referrer-Policy 而不起作用。
以上介绍了三种获取完整 URL 的方法,分别是使用 $_SERVER['REQUEST_URI']
、parse_url()
函数和 $_SERVER['HTTP_REFERER']
。其中,方法 1 和方法 2 可以较好地兼容不同的环境和浏览器设置,而方法 3 则有时不太可靠。
建议根据实际业务需求选择相应的方法来获取完整的 URL。