본문 바로가기

코딩/PHP

[PHP] IP 주소를 사용하여 국가와 도시를 알아내기

728x90
반응형

먼저 GeoIP 데이터베이스를 다운로드하고 PHP에서 사용할 수 있도록 설치해야 합니다. GeoIP 데이터베이스를 다운로드하려면 MaxMind 사이트(https://dev.maxmind.com/geoip/geoip2/geolite2/)에서 무료 버전인 GeoLite2 데이터베이스를 다운로드하면 됩니다. 다운로드한 파일을 압축 해제한 후, PHP에서 사용할 수 있도록 geoip 라이브러리를 설치해야 합니다. geoip 라이브러리는 PECL(PHP Extension Community Library)을 통해 설치할 수 있습니다.

설치가 완료되면 다음과 같은 코드를 사용하여 IP 주소로 국가와 도시를 가져올 수 있습니다.

 

// GeoIP 데이터베이스 파일 경로 설정
$database = "/path/to/GeoLite2-City.mmdb";

// IP 주소 가져오기
$ip = $_SERVER['REMOTE_ADDR'];

// GeoIP 데이터베이스 라이브러리 로드
require_once("geoip2.phar");

// 데이터베이스 생성
use GeoIp2\Database\Reader;
$reader = new Reader($database);

// IP 주소로 국가와 도시 가져오기
try {
    $record = $reader->city($ip);
    $country = $record->country->name;
    $city = $record->city->name;
} catch (Exception $e) {
    // 에러 처리
    $country = "Unknown";
    $city = "Unknown";
}

// 결과 출력
echo "국가: " . $country . "<br/>";
echo "도시: " . $city . "<br/>";

 

위 코드에서는 IP 주소를 $_SERVER['REMOTE_ADDR']로부터 가져와서, GeoIP 데이터베이스 파일 경로를 설정하고 데이터베이스를 생성합니다. 그리고 city() 함수를 사용하여 IP 주소로부터 국가와 도시를 가져옵니다. 가져오는 도중에 오류가 발생하면 $country와 $city 변수에 "Unknown"을 할당합니다. 마지막으로, 결과를 출력합니다.

위 코드를 사용하면 IP 주소로부터 국가와 도시를 쉽게 알아낼 수 있습니다. 다만, GeoIP 데이터베이스는 업데이트가 자주 이루어져야 하며, 정확도가 100% 보장되지는 않습니다.

 

정확도 100%를 원하시면 GeoIP 유료버전을 사용하세요.

728x90
반응형