获取当前 URL:PHP 中的最佳实践82


在 PHP 中获取当前 URL 是一个常见的任务,可以用于各种目的,例如:重定向用户、创建书签或构建网站导航。本文将探讨在 PHP 中获取当前 URL 的最佳实践,并提供各种示例。

$_SERVER['HTTP_HOST'] 和 $_SERVER['REQUEST_URI']

获取当前 URL 的最简单方法是使用内置的 $_SERVER 数组,该数组包含有关当前 HTTP 请求的信息。$_SERVER['HTTP_HOST'] 包含主机名(例如 ),而 $_SERVER['REQUEST_URI'] 包含请求的 URI(例如 /)。
$host = $_SERVER['HTTP_HOST'];
$uri = $_SERVER['REQUEST_URI'];
$url = '' . $host . $uri;

$_SERVER['HTTP_X_FORWARDED_HOST']

在使用代理服务器的情况下,服务器中可能包含 $_SERVER['HTTP_X_FORWARDED_HOST']。它包含客户端发出的原始主机名,而不仅仅是代理服务器的主机名。这对于处理来自代理服务器的请求非常有用。
$host = $_SERVER['HTTP_X_FORWARDED_HOST'];
$uri = $_SERVER['REQUEST_URI'];
$url = '' . $host . $uri;

$_SERVER['PHP_SELF']

$_SERVER['PHP_SELF'] 包含当前脚本的相对路径(例如 /)。它对于构建网站导航或链接到当前页面非常有用。
$url = '' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];

自定义函数

您还可以使用自定义函数来获取当前 URL。例如,以下函数将 $_SERVER 数组中的各种值组合到一个 URL 中:
function get_current_url() {
$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http';
$host = $_SERVER['HTTP_HOST'];
$uri = $_SERVER['REQUEST_URI'];
return $protocol . '://' . $host . $uri;
}

使用库

还有几个 PHP 库可以用于获取当前 URL。例如,Laminas\Uri\UriFactory 可以用来解析和操作 URL:
use Laminas\Uri\UriFactory;
$uri = UriFactory::createFromSuperglobals();
$url = $uri->toString();


根据具体情况,有许多方法可以获取 PHP 中的当前 URL。推荐使用 $_SERVER 数组,因为它提供了即时访问,并且在大多数情况下足够强大。但是,如果您需要更高级的功能,例如 URL 解析或代理服务器处理,则可以使用自定义函数或库。

2024-10-20


上一篇:利用 PHP 将数据写入文件

下一篇:在 PHP 中巧妙获取当前 URL