PHP를 사용하여 IP 주소 국가 가져오기 [복제]

이상적으로는 임의의 웹 브라우저에서 조회할 수 있는 PHP 스크립트를 조합하려고 합니다.PHP 스크립트에 액세스한 IP 주소의 국가를 반환합니다.

이것이 가능한가, 아니면 더 나은 해결책이 있는가?



질문에 대한 답변



다음과 같은 사용하기 쉬운 무료 API가 있습니다.

어느 쪽이 가장 신뢰성이 있다고 생각되는지는, 고객에게 달려 있습니다.

그렇지 않으면 서버의 로컬 데이터베이스를 기반으로 하는 스크립트가 있습니다.그러나 데이터베이스 데이터는 정기적으로 업데이트해야 합니다.이것 좀 봐.

HTH!

편집: 물론 프로젝트에 따라서는 HTML5 로케이션 기능을 참조할 수도 있습니다.Internet Explorer에서는 아직 사용할 수 없습니다(IE9은 아직 지원하지만 아직 멀지만 모바일 기기나 Safari/Firefox를 주로 사용하는 사용자라면 꼭 확인해 보시기 바랍니다.

일단 좌표를 얻으면 국가 코드로 역방향으로 지리 코드화할 수 있습니다.다음과 같은 API가 있습니다.

  • 예: http://ws.geonames.org/countryCode?lat=47.03&lng=10.2
  • 기타 API : http://www.geonames.org/export/ws-overview.html

2013년 4월 갱신
오늘날에는 우편 주소 데이터뿐만 아니라 IP 주소도 쉽게 지오코딩할 수 있는 PHP 라이브러리인 지오코더를 사용할 것을 권장합니다.

***2016년 9월 갱신
Google의 개인 정보 보호 정책이 변경되었기 때문에 서버에 HTPPS 인증서가 없거나 사용자가 위치를 확인할 수 없는 경우 HTML5 Geolocation API를 사용할 수 없습니다.이제 사용자의 IP를 사용하여 PHP에 체크인하거나 HTTPS 인증서를 얻을 수 있습니다.




다양한 웹 API를 통해 이를 수행할 수 있습니다.다음은 제 서비스 http://ipinfo.io을 사용하는 예입니다.

$ip = $_SERVER['REMOTE_ADDR']; $details = json_decode(file_get_contents("http://ipinfo.io/{$ip}")); echo $details->country; // -> "US" 

Web API는 빠르고 쉬운 훌륭한 솔루션입니다.다만, 많은 검색을 실시할 필요가 있는 경우는, 자신의 머신에 IP-> country 데이타베이스가 있는 것이 좋습니다.MaxMind는 GeoIP를 포함한 다양한 PHP 라이브러리에서 사용할 수 있는 무료 데이터베이스를 제공합니다.




MaxMind에서 ip-table을 다운로드할 수 있습니다.

http://www.maxmind.com/app/geolite

CSV를 데이터베이스로 Import합니다(ip_long_from + ip_long_to 인덱스를 작성하십시오).그 후, 다음의 조작을 간단하게 실시할 수 있습니다.

$iplong = ip2long($_SERVER['REMOTE_ADDR']);
// should use mysqli with prepared statements etc, but just an example mysql_query("
SELECT country
FROM ip_table
WHERE $iplong BETWEEN ip_long_from AND ip_long_to
LIMIT 1 "); 



다음은 http://www.geoplugin.net/json.gp을 사용하는 예입니다.

$ip = $_SERVER['REMOTE_ADDR']; $details = json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip={$ip}")); echo $details; 



위치 API로 IP 주소에서 국가를 가져올 수 있습니다.

코드


echo file_get_contents('https://ipapi.co/8.8.8.8/country/'); 

대답


US

여기 바이올린이 있다.응답은text예를 들어 특정 필드를 쿼리할 때 사용합니다. country여기. 해독할 필요 없이 코드에 꽂기만 하면 돼

추신: 모든 필드를 원하는 경우.https://ipapi.co/8.8.8.8/json/응답은 다음과 같습니다.JSON.