📜  php 获取 url - PHP (1)

📅  最后修改于: 2023-12-03 15:33:39.088000             🧑  作者: Mango

PHP 获取 URL

在 Web 开发中,获取当前网页的 URL 地址是一个常见的需求。PHP 提供了多种方式来获取当前网页的 URL,下面我们将逐一介绍这些方法。

1. 使用 $_SERVER['REQUEST_URI']

PHP 的 $_SERVER 变量是一个包含了诸如头信息、路径、脚本位置等信息的数组。其中,$_SERVER['REQUEST_URI'] 可以用来获取当前页面的 URL。例如,假设当前页面的 URL 是 http://example.com/test.php?id=123,则使用 $_SERVER['REQUEST_URI'] 可以获取到 /test.php?id=123:

$url = $_SERVER['REQUEST_URI'];
echo $url; // 输出 /test.php?id=123

需要注意的是,$_SERVER['REQUEST_URI'] 获取到的值会包含查询字符串。如果只需要获取页面路径而不包含查询字符串,可以使用 PHP 的 parse_url() 函数进行解析:

$parts = parse_url($_SERVER['REQUEST_URI']);
$path = $parts['path'];
echo $path; // 输出 /test.php
2. 使用 $_SERVER['HTTP_HOST']

除了 $_SERVER['REQUEST_URI'],$_SERVER 数组中还有一个 $_SERVER['HTTP_HOST'] 变量,可以用来获取当前页面的主机名。例如,假设当前页面的 URL 是 http://example.com/test.php,则使用 $_SERVER['HTTP_HOST'] 可以获取到 example.com:

$host = $_SERVER['HTTP_HOST'];
echo $host; // 输出 example.com
3. 使用 $_SERVER['SERVER_NAME']

除了 $_SERVER['HTTP_HOST'],还可以使用 $_SERVER['SERVER_NAME'] 变量来获取当前页面的主机名。两者的区别在于,$_SERVER['HTTP_HOST'] 获取到的值会包含端口号,而 $_SERVER['SERVER_NAME'] 不会包含端口号。例如,假设当前页面的 URL 是 http://example.com:8080/test.php,则使用 $_SERVER['HTTP_HOST'] 可以获取到 example.com:8080,而使用 $_SERVER['SERVER_NAME'] 则可以获取到 example.com:

$name = $_SERVER['SERVER_NAME'];
echo $name; // 输出 example.com
4. 使用 $_SERVER['HTTPS']

如果需要判断当前页面是否使用了 HTTPS,可以使用 $_SERVER['HTTPS'] 变量。如果 $_SERVER['HTTPS'] 的值为 'on',则表示当前页面使用了 HTTPS,否则表示未使用 HTTPS:

$is_https = ($_SERVER['HTTPS'] == 'on');
var_dump($is_https); // 输出 bool(true) 或 bool(false)
总结

以上就是 PHP 获取 URL 的几种方法。需要注意的是,$_SERVER 数组中包含的信息都是由 Web 服务器传递给 PHP 的,因此有些值可能会被篡改或者伪造,需要谨慎使用。如果需要获取更加精确的 URL 信息,可以使用 PHP 的第三方库或者框架,例如 Laravel 提供了更加方便的 URL 生成和解析方法。