2012-05-30 4 views
1

나는 $_SERVER['HTTP_HOST'] & $_SERVER['SERVER_NAME']을했지만, 둘 다 그냥을 domain.com에 URL이 sub.domain.com, 또는 경우가 확인하려면, sub.domain.com을 반환합니다.domain.com 또는 sub.domain.com을 어떻게 확인할 수 있습니까?

스크립트는 sub.domain.com에서 실행되며 둘 다 동일한 데이터를 반환합니다.

$_SERVER['HTTP_HOST'] 반환 : sub.domain.com $_SERVER['SERVER_NAME'] 반환 : sub.domain.com

나는 URL 만 domain.com 부분을 취득하고 싶습니다. 스크립트는 모든 하위 도메인 이름에서 실행될 수 있으므로 위의 변수가 동일한 정보를 반환하기 때문에이를 수행하는 방법이 확실하지 않습니다.

+0

어느 것과 언제 어디서? -'HTTP_HOST' *는 당신이 찾고있는 것이어야합니다. – hakre

+0

둘 다 sub.domain.com을 반환하면 왜 내용을 확인해야합니까? domain.com이 아니라 sub.domain.com이 될 것입니다. – Quentin

+0

@Quentin 스크립트는 여러 다른 하위 도메인에서 실행되거나 일부는 하위 도메인없이 실행됩니다. URL이 하위 도메인인지 TLD인지를 알아야합니다. –

답변

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)); 
+0

둘 다 sub.domain.com을 반환합니다. –

+0

@Michael Ecklund : 처음에는 약간의 질문을했는데, 내가 찾고있는 코드 예제를 추가했습니다. – hakre

0

<?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 
?> 
(php.net에 있음)
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 
} 
,536,
관련 문제