2012-12-30 3 views
0

PHP에서 해당 국가와 관련하여 적절한 페이지로 사용자를 리디렉션하려고합니다. 예 : US - mysite.com, 호주 - mysite.com.au. 이미이 기능을 통해 IP 주소를 가지고 있으며이 사이트를 사용하여 국가를 얻으려고합니다 : http://api.hostip.info/country.php?ip=.PHP를 사용하여 사용자를 국가로 리디렉션

if (getenv(HTTP_X_FORWARDED_FOR)) { 
    $ip_address = getenv(HTTP_X_FORWARDED_FOR); 
    echo $ip_address; 
} else { 
    $ip_address = getenv(REMOTE_ADDR); 
    echo $ip_address; 
} 

ip_address_to_number($ip_address); 
+0

을 (http://php.net/manual/en/book.geoip.php) – PhearOfRayne

답변

2

내가 NetImpact's API을 사용하는 것이 좋습니다,하지만 당신은 문제가 무엇인지 구체적으로 우리를 알 수 있습니까? 당신이 한 일은 당신이하려는 일을 말해주었습니다 만, 현재 코드가 어떻게 오작동 하는지를 결코 알려주지 않았습니다.

참고 : Netimpact가 종료되었습니다. 이들은 사용자를 KickFire으로 이전했으며 IP2GEO, IP2Company, Domain2IP와 같은 더 광범위한 API를 제공합니다.

그러나 원하는 경우 해당 URL의 콘텐츠를 가져 오는 것이 매우 쉽습니다. 그냥 PHP 페이지에 넣고 : [GeoIP가]를 사용으로 당신이 보는 할 수 있습니다 API를 호출하는 대신

<?php 
$ip = $_SERVER['REMOTE_ADDR']; 
$url = 'http://api.hostip.info/country.php?ip=' . $ip; 
$country = file_get_contents($url); 
// Do something with the country, I am forwarding to a subdomain here but you can 
// do whatever you like. 
header('Location: http://' . $country. '.mysite.com'); 
?> 
+0

감사합니다 . 내가 작업을하지만 오류를주는 것을 얻을 관리했습니다 : 페이지를 리디렉션 헤더 정보를 수정할 수 없습니다 : 만약 ($ 나라 == "미국") \t \t { \t \t \t 헤더 ('위치 : HTTP ://mysite.com '); \t \t} 다른 \t \t \t \t 경우 ($ 나라 == 'AU') \t \t { \t \t \t 헤더 ('위치 : http://mysite.com.au'); \t \t} – liamp47

+0

헤더 앞에 출력이 있어야합니다. 기존 코드를 변경하지 않으려면 출력을 버퍼링하십시오. ob_start(); 다른 것들보다 먼저 페이지 상단에 이것을 넣으십시오. – SISYN

관련 문제