2013-05-22 4 views
0

http://chir.ag/projects/geoiploc/PHP는 지리적의 IP LOC는

안녕하세요, 나는이를 설정하려고 작동하지 않습니다,하지만 난 include("geoiploc.php");를 사용할 때마다 페이지가 비어 내가 include("geoiploc.php");을 제거 할 때마다 난 단지 내 IP 주소를 참조하십시오. PHP를 실행할 수있는 웹 호스트에 geoiploc.php 및 index.php를 업로드했습니다.

IP 또는 다른 방법으로 국가 이름을 표시하는 다른 쉬운 방법이 있다면 그게 무엇입니까? 제발 빨리해야합니까

그래서 내가 말했듯이, 내가 내 include("geoiploc.php");을 제거 할 때마다 내 IP만을 보여줍니다?

당신은이 라이브러리를 필요 http://chir.ag/projects/geoiploc/autogen/geoiploc.tar.gz를이 스크립트를 실행하는 코드입니다 :

include("geoiploc.php"); // Must include this 

    // ip must be of the form "192.168.1.100" 
    // you may load this from a database 
    $ip = $_SERVER["REMOTE_ADDR"]; 
    echo "Your IP Address is: " . $ip . "<br />"; 

    echo "Your Country is: "; 
    // returns country code by default 
    echo getCountryFromIP($ip); 
    echo "<br />\n"; 

    // optionally, you can specify the return type 
    // type can be "code" (default), "abbr", "name" 

    echo "Your Country Code is: "; 
    echo getCountryFromIP($ip, "code"); 
    echo "<br />\n"; 

    // print country abbreviation - case insensitive 
    echo "Your Country Abbreviation is: "; 
    echo getCountryFromIP($ip, "AbBr"); 
    echo "<br />\n"; 

    // full name of country - spaces are trimmed 
    echo "Your Country Name is: "; 
    echo getCountryFromIP($ip, " NamE "); 
    echo "<br />\n"; 

답변

3

당신은 무료 MaxMind 지오 라이트를 사용할 수 있습니다. 여기에 파일을 다운로드 : http://www.maxmind.com/download/geoip/api/php/php-latest.tar.gz

그런 다음 여기에서 지오 국가 데이터베이스를 다운로드 : http://dev.maxmind.com/geoip/legacy/geolite

이제 다음과 같이 사용할 수 있습니다 :

<?php 

    include("geoip.inc"); 

    function ipAddress(){ 
     if (!empty($_SERVER['HTTP_CLIENT_IP'])){ //check ip from share internet 
      $ip=$_SERVER['HTTP_CLIENT_IP']; 
     } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ // proxy pass ip 
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; 
     } else { 
      $ip=$_SERVER['REMOTE_ADDR']; 
     } 
     return $ip; 
    } 

    $gi = geoip_open("path/to/GeoIP.dat",GEOIP_STANDARD); 

    echo geoip_country_name_by_addr($gi, ipAddress()); 
    // echo geoip_country_code_by_addr($gi, ipAddress()); <-- country code 

    geoip_close($gi); 

?> 

UPDATE : 당신이해야 사용자의 도시를 얻을 수 있습니다 상단 링크를 다운로드하고 sample_city.php이라는 파일을 찾아 몇 가지 예제 코드를 확인하십시오. 이 파일을 다운로드해야합니다 : http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz 그리고 PHP 파일과 같은 디렉토리에 놓습니다. 빠른 예는 다음과 같습니다.

<?php 

    include("geoipcity.inc"); 
    function ipAddress(){ 
     if (!empty($_SERVER['HTTP_CLIENT_IP'])){ //check ip from share internet 
      $ip=$_SERVER['HTTP_CLIENT_IP']; 
     } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ // proxy pass ip 
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; 
     } else { 
      $ip=$_SERVER['REMOTE_ADDR']; 
     } 
     return $ip; 
    } 
    $gi = geoip_open("GeoIPCity.dat",GEOIP_STANDARD); 
    $record = geoip_record_by_addr($gi,ipAddress()); 
    print $record->country_code . " " . $record->country_code3 . " " . $record->country_name . "\n"; 
    geoip_close($gi); 

?> 
+0

안녕하세요, 조 감사합니다. 도움을 주셔서 감사합니다.하지만 지리적 위치 데이터베이스를 넣어야하는 폴더는 무엇입니까? 그리고 어느 것을 다운로드해야합니까? 나는 지리적 도시를 원하지만 어느 것을 다운로드해야할지 모르겠다. – MOTIVECODEX

+1

방금 ​​답변을 업데이트했습니다. – Joe

+0

오, 이제 작동하는 것을 볼 수 있습니다. 방문자에게만 표시되는 코드를 알려주시겠습니까? 우편 번호와 지역 번호를 알려주십시오. 아니면 가능하지 않습니까? – MOTIVECODEX