在PHP中回显请求的URL

时间:2014-02-06 16:55:02

标签: php

我甚至不是一个PHP新手。但我需要给一位来到我公司的外部顾问打电话给BS,告诉我一些事情是不可能的。

在PHP中是否可以简单地创建一个显示用户请求的URL的网页。

换句话说:而不是回应/打印“Hello World”

我希望页面打印用户请求的网址。

4 个答案:

答案 0 :(得分:2)

这可以通过以下方式完成:

echo $_SERVER['REQUEST_URI'] -

获取完整列表:

print_r($_SERVER)

另一个有用的是$_SERVER['HTTP_HOST']

如果你要进行重定向,你需要做更多的步法,但一个简单的解决方案是:

header("Location: {$site}?original_request={$_SERVER['REQUEST_URI']}"); - 然后处理您重定向到的页面中的其余部分。

答案 1 :(得分:2)

我认为您要找的是full网址。这可以用。

完成
$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
echo $url;

只是包含端口。

$port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
$url = "http://".$_SERVER['HTTP_HOST'].$port.$_SERVER['REQUEST_URI'];

答案 2 :(得分:1)

这里你去:

echo $_SERVER['PHP_SELF'];

答案 3 :(得分:1)

从某种意义上说,你和顾问都是正确的。在大多数情况下,是的,您可以获得确切的URL。在许多情况下,URL将是近似值。在某些情况下,您可能无法接近请求的URL。

以下是构建完全网址的一些障碍:

  1. 未发送#fragment
  2. 您不知道:端口是否存在(因此您无法知道是否添加端口)
  3. 你不知道在PHP重新路由之外做了什么(例如在.htaccess中)
  4. 你可以通过一个隐藏的输入变量来解决这些问题,这个输入变量由Javascript填充并带有完整的URL,然后发布。但是后来的争论是“如果Javascript没有开启,那就好了。”

    所以,我说“是的,你可以”是实用/务实的答案,而“不,你不能”是学术答案。