应该使用哪个 $_SERVER 变量?
Which $_SERVER variable should be used?
我正在尝试在 PHP 脚本中创建一个 link,它将把我带到地址的主要部分(粗体):http://localhost:8888 /index.php
我可以把确切的 link 放在自己身上,但我想如果我使用 $_SERVER 变量,那么如果我移动文件等,它会允许一定程度的灵活性。
我做了一个 vardump($_SERVER)
,看起来 $_SERVER['HTTP_ORIGIN']
包含我需要的数据,但是这似乎也不是一个理想的变量:
这是创建动态 link 的正确方法还是有替代方法?
尝试使用
$address = 'http://' . $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'];
为了更加灵活,您可以检查是否使用了 https 或 http,以及是否使用了默认 80 或 443 (https) 以外的端口,这也意味着 URL 中是否未定义端口。
function url(){
$port = null;
if( ($_SERVER['SERVER_PORT'] != '80') && ($_SERVER['SERVER_PORT'] != '443') ) {
$port = ':' . $_SERVER['SERVER_PORT'];
}
$protocol = empty($_SERVER['HTTPS']) ? 'http://' : 'https://';
return $protocol . $_SERVER['SERVER_NAME'] . $port;
}
我正在尝试在 PHP 脚本中创建一个 link,它将把我带到地址的主要部分(粗体):http://localhost:8888 /index.php
我可以把确切的 link 放在自己身上,但我想如果我使用 $_SERVER 变量,那么如果我移动文件等,它会允许一定程度的灵活性。
我做了一个 vardump($_SERVER)
,看起来 $_SERVER['HTTP_ORIGIN']
包含我需要的数据,但是这似乎也不是一个理想的变量:
这是创建动态 link 的正确方法还是有替代方法?
尝试使用
$address = 'http://' . $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'];
为了更加灵活,您可以检查是否使用了 https 或 http,以及是否使用了默认 80 或 443 (https) 以外的端口,这也意味着 URL 中是否未定义端口。
function url(){
$port = null;
if( ($_SERVER['SERVER_PORT'] != '80') && ($_SERVER['SERVER_PORT'] != '443') ) {
$port = ':' . $_SERVER['SERVER_PORT'];
}
$protocol = empty($_SERVER['HTTPS']) ? 'http://' : 'https://';
return $protocol . $_SERVER['SERVER_NAME'] . $port;
}