1

我试过$_SERVER['HTTP_HOST']& $_SERVER['SERVER_NAME'],但它们都返回sub.domain.com,我希望它检查 URL 是sub.domain.com,还是只是 domain.com

脚本在 sub.domain.com 上运行,它们都返回相同的数据。

$_SERVER['HTTP_HOST']返回:sub.domain.com $_SERVER['SERVER_NAME']返回:sub.domain.com

我希望只获取 url 的 domain.com 部分。由于脚本可以在任何子域名上运行,因此我不确定如何执行此操作,因为上述两个变量都返回相同的信息。

4

3 回答 3

4

我会检查 HTTP_HOST。通常两者相同,但有时 SERVER_NAME 设置不同。如有疑问,请同时检查它们。

'HTTP_HOST'
主机的内容:当前请求的标头,如果有的话。

http://php.net/manual/en/reserved.variables.server.php

至于如何检查,你可以对主域名进行字符串替换,看看结果字符串是否为空。剩下的就是子域。


到目前为止,您正在寻找一些琐碎的字符串操作,这里是最后两部分:

$yourhost = implode('.', array_slice(explode('.', $_SERVER['HTTP_HOST']), -2));
于 2012-05-30T21:33:23.833 回答
0

您可以尝试以下功能(在 php.net 上找到)

<?php 
function getHost($Address) { 
$parseUrl = parse_url(trim($Address)); 
return trim($parseUrl[host] ? $parseUrl[host] : array_shift(explode('/', $parseUrl[path],     2))); 
} 

getHost("example.com"); // Gives example.com 
getHost("http://example.com"); // Gives example.com 
getHost("www.example.com"); // Gives www.example.com 
getHost("http://example.com/xyz"); // Gives example.com 
?> 
于 2012-05-30T21:36:20.437 回答
0

小脏黑客

$explodedHost = explode('.', $_SERVER['HTTP_HOST']);
$size         = count($explodedHost);
$domain       = $explodedHost[$size - 2] . '.' . $explodedHost[$size - 1] . 'com';
if ($_SERVER['HTTP_HOST'] == $domain) {
  // you are on domain.com
}
于 2012-05-30T21:36:36.037 回答