【发布时间】:2011-01-06 04:18:49
【问题描述】:
这里的新手问题,是否有任何内置的 PHP 标记可用于检索页面的 URL 并在屏幕上回显它?
谢谢。
【问题讨论】:
-
哪一页?当前的(即由 PHP 脚本本身生成的)?
-
这非常类似于:stackoverflow.com/questions/2079457/…。看,我用同样的函数来回答它!
这里的新手问题,是否有任何内置的 PHP 标记可用于检索页面的 URL 并在屏幕上回显它?
谢谢。
【问题讨论】:
回显当前页面的 URL。
$pageURL = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
if ($_SERVER["SERVER_PORT"] != "80")
{
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
}
else
{
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
echo $pageURL;
【讨论】:
print_r($_SERVER); 查看所有可用的服务器变量(端口、各种URI、请求标头和语言等)并查看输出的源代码。
$_SERVER["HTTPS"] == "on",我相信你可以使用$_SERVER["SCRIPT_URI"] 并得到整个东西。还是仅使用 Apache?
如果您的网络服务器在标准端口(HTTP 为 80 或 HTTPS 为 443)上运行,则可以:
getservbyport($_SERVER['SERVER_PORT'], 'tcp') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']
【讨论】:
看看$_Server 变量。具体来说,您可能需要 REQUEST_URI 值。
【讨论】:
$base_url = _SERVER["HTTP_HOST"];
$url_path = _SERVER["REQUEST_URI"];
echo $base_url.$url_path;
假设请求的页面是http://sample.org/test.php,你会得到:
sample.org/test.php
您必须添加更多 $_SERVER 变量才能获得方案 (http://)。 REQUEST_URI 还保留任何 GET 变量不变,所以如果页面请求是 http://sample.org/test.php?stuff=junk,你会得到:
sample.org/test.php?stuff=junk
如果您不想这样做,请使用 $_SERVER['PHP_SELF'] 而不是 REQUEST_URI。
如果您想要一种非常简单的方法来查看可用的全局变量,请创建一个包含以下内容的页面:
<?php
phpinfo();
?>
并将该脚本放在您感兴趣的任何目录中。您不仅会看到各种简洁的信息,还会看到各种因素,例如 HTTP 与 HTTPS、mod_rewrite,甚至 Apache 与 IIS 可以不同地设置一些全局变量或根本不设置一些全局变量。
【讨论】: