이상적으로는 임의의 웹 브라우저에서 조회할 수 있는 PHP 스크립트를 조합하려고 합니다.PHP 스크립트에 액세스한 IP 주소의 국가를 반환합니다.
이것이 가능한가, 아니면 더 나은 해결책이 있는가?
질문에 대한 답변
다음과 같은 사용하기 쉬운 무료 API가 있습니다.
- http://ipinfodb.com/ip_location_api.php
- http://www.ipgeo.com/api/
- http://ip2.cc/
- http://www.geobytes.com/IpLocator.htm
- https://iplocate.io/
- 그리고 다른 많은 것들도요.
어느 쪽이 가장 신뢰성이 있다고 생각되는지는, 고객에게 달려 있습니다.
그렇지 않으면 서버의 로컬 데이터베이스를 기반으로 하는 스크립트가 있습니다.그러나 데이터베이스 데이터는 정기적으로 업데이트해야 합니다.이것 좀 봐.
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;
- 자세한 것은, http://channasmcs.blogspot.com/2014/11/get-country-of-ip-address-with-php.html#sthash.7u3WCwQq.dpuf 를 참조해 주세요.
이 위치 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
.