应该使用哪个$ _SERVER变量?

时间:2015-03-14 16:55:50

标签: php apache

我正在尝试在PHP脚本中创建一个链接,该链接将我带到我的地址的主要部分(粗体): http://localhost:8888 /index.php

我可以把确切的链接放在自己身上,但是如果我使用$ _SERVER变量,那么如果我移动文件等它会允许一定程度的灵活性。

我做了一个vardump($_SERVER)$_SERVER['HTTP_ORIGIN']似乎包含了我需要的数据,但似乎这可能不是一个理想的变量: How secure is HTTP_ORIGIN?

这是创建动态链接的正确方法还是有替代方法?

2 个答案:

答案 0 :(得分:4)

尝试使用

$address = 'http://' . $_SERVER['SERVER_NAME'] . ':' . $_SERVER['SERVER_PORT'];

答案 1 :(得分:3)

为了更加灵活,您可以检查是否使用了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;
}