2011-10-05 3 views
4

나는 방문자가 중동에서 경우 감지 할 수있는 명확한 방법을 찾고 있어요. 그럴 경우 다른 헤더 이미지를 표시해야합니다 (현재 머리글에 돼지가 들어있어 눈살을 찌푸리게됩니다). 그 다음 다른 것을위한 경우PHP를 통해 중동 방문객을 어떻게 감지합니까?

은 내가 코딩 할 수 있지만, 난 그냥 감지하는 간단한 기능을 찾고 있어요. 다음은 IP로 국가를 얻는 데 사용한 기능입니다.

function get_country_by_ip($ip){ 

    if(!$ip) return false; # Missing parameter 

    # Pull the XML 
    $url = 'http://api.hostip.info/?ip='.$ip; 
    $xml = simplexml_load_file($url); 

    # Parse the data and store into array 
    $citystate = explode(", ", $xml->children('gml', true)->featureMember->children()->Hostip->children('gml', true)->name); 
    $result['city'] = $citystate[0]; 
    $result['state'] = $citystate[1]; 
    $result['country'] = $xml->children('gml', true)->featureMember->children()->Hostip->countryName; 
    $result['country_abbr'] = $xml->children('gml', true)->featureMember->children()->Hostip->countryAbbrev; 

    return (object) $result; 

} 

아무도 도와 줄 수 있습니까? 감사.

+0

당신이 무슨 문제 위의 나라가 있다면? - 또한이 국가에 대한 권리를 보장하지 않습니다 –

+7

3 회 중동/N에 비해 아시아 - 태평양 지역의 많은 무슬림이 있습니다. 아프리카. 참조 [위키 피 디아 (http://en.wikipedia.org/wiki/List_of_countries_by_Muslim_population) –

답변

2

"중동"그룹에 속하는 국가를 정의 할 수 있습니다 - 구성 가능한 배열을 PHP 파일이나 데이터베이스에 직접 정의한 다음 해당 함수에서 반환 된 특정 국가가 속한 국가 목록에 속하는지 확인하십시오 "중동". 이처럼 예를함으로써, 뭔가 :

$middleEast = array(
'Syria', 
'Iraq', 
... // all the rest 
); 

$country = get_country_by_ip($ip); 

if (in_array($country['country'], $middleEast) { 
echo 'Middle East!'; 
exit; 
} 
+5

일본과 중국이 중동의 일부로 간주되었다 언제부터? –

+0

극동과 혼동 스럽지만 그럼에도 불구하고 이것은 제안 된 접근 방식과 관련이 있습니까? – ddinchev

+0

나는 동적 영역을 결정할 수 바라고, 이런 식으로하고 싶지 않았다, 그러나 이것은 완벽하게 밖으로했다. 별도의 회신에 코드 게시. – hatfieldajoshua

0

난 당신이 무료로 http://phpweby.com/software/ip2country을 시도하는 것이 좋습니다.

+0

나는 그 서비스를 한 번도 사용하지 않았지만 GeoIP (GeoLite Country) 데이터베이스를 무료로 사용했습니다. 그리고 계속 업데이트하면 많은 문제가 발생할 가능성이 없습니다. – crmpicco

1
<?php 

/* get country by ip */ 

function get_country_by_ip($ip){ 

    if(!$ip) return false; 

    /* pull the xml */ 

    $url = 'http://api.hostip.info/?ip='.$ip; 
    $xml = simplexml_load_file($url); 


    /* parse the data and store into array */ 

    $citystate = explode(", ", $xml->children('gml', true)->featureMember->children()->Hostip->children('gml', true)->name); 

    $result['city'] = $citystate[0]; 
    $result['state'] = $citystate[1]; 

    $result['country'] = (array) $xml->children('gml', true)->featureMember->children()->Hostip->countryName; 
    $result['country'] = $result['country'][0]; 

    $result['country_abbr'] = (array) $xml->children('gml', true)->featureMember->children()->Hostip->countryAbbrev; 
    $result['country_abbr'] = $result['country_abbr'][0]; 

    return (object) $result; 

} 


/* get country */ 

$geo_info = get_country_by_ip($_SERVER['REMOTE_ADDR']); 


/* MENA countries */ 

$mena = array(

    'ALGERIA', 

    'BAHRAIN', 

    'EGYPT', 

    'IRAN', 

    'IRAQ', 

    'ISRAEL', 

    'JORDAN', 

    'KUWAIT', 

    'LEBANON', 

    'LIBYA', 

    'MOROCCO', 

    'OMAN', 

    'PALESTINE', 

    'QATAR', 

    'SAUDI ARABIA', 

    'SYRIA', 

    'TUNISIA', 

    'UNITED ARAB EMIRATES', 

    'YEMEN', 

    'ARMENIA', 

    'AZERBAIJAN', 

    'CYPRUS', 

    'DJIBOUTI', 

    'MALTA', 

    'MAURITANIA', 

    'SAHRAWI ARAB DEMOCRATIC REPUBLIC', 

    'SOMALIA', 

    'SUDAN', 

    'TURKEY', 

); 


/* image with a hog */ 

$img = 'mmm-pork.jpg'; 

if(in_array($geo_info->country, $mena)){ 


    /* image with no hog */ 

    $img = 'cant-have-pork.jpg'; 

} ?>