php获取当前域名

2024-09-28 14:46:34 27 Admin
网站建设制作

 

在PHP中,可以使用`$_SERVER`超全局变量来获取当前域名。具体步骤如下:

 

1. 获取`$_SERVER['HTTP_HOST']`的值。`$_SERVER['HTTP_HOST']`包含了当前请求的域名或IP地址。

```php

$domain = $_SERVER['HTTP_HOST'];

```

 

2. 判断当前请求是否使用了HTTPS协议。如果使用了HTTPS协议,需要在域名前面添加`https://`前缀;如果没有使用HTTPS协议,需要在域名前面添加`http://`前缀。

 

```php

$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://';

$domain = $protocol . $domain;

```

 

3. 获取当前请求的端口号。可以使用`$_SERVER['SERVER_PORT']`来获取。

 

```php

$port = $_SERVER['SERVER_PORT'];

```

 

4. 如果请求的端口号不是80(HTTP)或443(HTTPS),需要将端口号添加到域名后面。

 

```php

if (($protocol === 'http://' && $port !== 80) || ($protocol === 'https://' && $port !== 443)) {

$domain .= ':' . $port;

}

```

 

最终,通过以上步骤,可以得到当前域名的完整URL。例如,如果当前请求的域名为`example.com`,使用了HTTPS协议,并且端口号为443,那么得到的完整URL为`https://example.com`。

 

值得注意的是,以上方法获取的是当前请求的域名,而不是当前文件所在的域名。如果需要获取当前文件所在的域名,可以使用`__DIR__`魔术常量和`$_SERVER['DOCUMENT_ROOT']`来获取当前执行文件的*路径,然后使用`parse_url()`函数来解析域名。

 

```php

$currentFile = __DIR__;

$documentRoot = $_SERVER['DOCUMENT_ROOT'];

$relativePath = str_replace($documentRoot

''

$currentFile);

$url = $domain . $relativePath;

```

 

需要注意的是,`__DIR__`魔术常量返回的是当前执行文件的所在目录的*路径,`$_SERVER['DOCUMENT_ROOT']`返回的是Web服务器的根目录的*路径。

Copyright © 悉地网 2018-2024.All right reserved.Powered by XIDICMS 备案号:苏ICP备18070416号-1