> 백엔드 개발 > PHP 튜토리얼 > http - 타사 인터페이스를 사용하지 않고 IP 주소를 기반으로 지리적 위치를 얻는 방법이 PHP에 있습니까? (타사 인터페이스는 이 기능을 어떻게 구현합니까?)

http - 타사 인터페이스를 사용하지 않고 IP 주소를 기반으로 지리적 위치를 얻는 방법이 PHP에 있습니까? (타사 인터페이스는 이 기능을 어떻게 구현합니까?)

WBOY
풀어 주다: 2016-08-18 09:16:00
원래의
1316명이 탐색했습니다.

IP를 기반으로 지리적 위치를 획득하는 도구의 원리가 매우 궁금합니다. IP의 각 숫자는 무엇을 나타냅니까? 타사 인터페이스를 사용하지 않고 로컬에서 이 작업을 수행할 수 있습니까?

답글 내용:

IP를 기반으로 지리적 위치를 획득하는 도구의 원리가 매우 궁금합니다. IP의 각 숫자는 무엇을 나타냅니까? 타사 인터페이스를 사용하지 않고 로컬에서 이 작업을 수행할 수 있습니까?

ISP란 무엇인가요? 쉽게 말하면 차이나텔레콤, 차이나유니콤, 차이나모바일 등의 통신사업자와 같다.
공급자가 있으면 온라인에 접속할 수 있습니다. 온라인에 접속하면 모뎀을 통해 임시 IP(주기적 변경)를 얻을 수 있습니다.
그런데 이 IP가 정말 무작위로 주어지는 걸까요? 왜 그렇게 무작위입니까?
APNIC(아시아 태평양 인터넷 네트워크 정보 센터)가 이 조직입니다. 이는 현재 전 세계에서 운영되고 있는 5개 지역 인터넷 등록 기관 중 하나이며 클래스 B IP 주소를 할당하는 국제 조직입니다. 인터넷 운영을 지원하는 글로벌 배포 및 등록 서비스를 제공합니다. 이러한 회원에는 인터넷 서비스 제공업체, 국립 인터넷 등록소(National Internet Registry) 및 비영리 회원 기반 조직의 유사한 조직이 포함됩니다. APNIC는 56개 경제 구역이 포함된 아시아 태평양 지역을 담당합니다.

APNIC가 중국에 1백만 개의 IP 주소를 할당한다고 가정합니다. 그러다가 중국으로 넘어가 국내 최고 관리기관을 거쳐 차이나텔레콤, 차이나모바일, 차이나유니콤, 차이나모바일 등 상위 ISP에 배포된다. 그런 다음 이러한 ISP는 자체 규칙에 따라 전국의 여러 지방에 재배포한 다음 시, 카운티, 타운 등에 재배포합니다.

IP地址每个数字并不代表什么,国内顶级ISP的IP分配是公开的,因此只有拿到这个库,才能根据用户的IP来知道用户是什么位置的由于这个库的更新并不及时,所以并不100%准确

업데이트

중국에서 가장 인기 있는 IP 라이브러리는 Innocence입니다. 공식 홈페이지: http://www.cz88.net/ 오른쪽 상단에서 다운로드 받으실 수 있습니다. 설치 후, IP 할당 데이터베이스인 디렉토리에 .dat 파일이 있을 것입니다. PHP 사용과 다른 언어 사용의 결합은 Baidu에서 찾을 수 있습니다.

PHP는 GeoIP 확장 프로그램과 데이터베이스를 설치하여 IP를 기반으로 방문자의 국가/도시/위도 및 경도를 얻습니다.
http://php.net/manual/zh/ref....
sudo apt-get install libgeoip-dev
pecl install geoip-1.1.0
참고: 베타 버전은 버전 번호를 지정해야 합니다. apt로 설치된 PHP인 경우 php5-geoip 패키지를 php.ini에 직접 설치하세요.

GeoLiteCity 데이터베이스 무료 다운로드(압축 해제 후 18MB):
<code>extension=geoip.so
geoip.custom_directory="/usr/share/GeoIP"
</code>
로그인 후 복사
http://dev.maxmind.com/geoip/...

wget http://geolite.maxmind.com/do...
gunzip GeoLiteCity.dat.gz
sudo mkdir -v /usr/share/GeoIP
sudo mv -v GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

테스트:

php -a


PHP는 "주변 사람 찾기" 기능을 쉽게 구현하고, IP를 기반으로 경도와 위도를 결정하고, 경도와 위도를 기반으로 거리를 계산합니다
<code><?php
print_r(geoip_record_by_name('106.37.165.80')); 回车后按Ctrl+D运行
Array
(
    [continent_code] => AS
    [country_code] => CN
    [country_code3] => CHN
    [country_name] => China //国家
    [region] => 22
    [city] => Beijing //城市
    [postal_code] =>
    [latitude] => 39.928901672363 //纬度
    [longitude] => 116.38829803467 //经度
    [dma_code] => 0
    [area_code] => 0
)
</code>
로그인 후 복사

타사 인터페이스를 사용하지 않는 경우 쿼리 일치를 위해 타사에서 제공하는 IP 라이브러리도 사용해야 합니다.

그러나 100% 정확하지는 않습니다.


인터페이스와 IP 라이브러리를 모두 제공하는 서비스 제공업체 추천: http://www.ipip.net/

모두 자체 IP 라이브러리를 가지고 있습니다. 로컬에 IP 라이브러리가 없는 경우

제3자 인터페이스는

을 통해 지리적 위치 정보를 얻을 수 있습니다. 실제로

의 데이터베이스 매핑은 해당 데이터베이스에 ip과 지리적 위치 간의 많은 관계를 저장하기 때문입니다. 제3자 서비스를 제공합니다ip => address -info ip물론 직접 구현할 수도 있지만 그렇게 큰 데이터베이스 지원이 없을 수도 있습니다

그래도 타사 인터페이스를 요청하고 싶지 않다면 다운로드할 수 있습니다

무료 GeoIP 데이터베이스

여기에 오픈소스 코드가 있으니 직접 공부해 보세요. http://git.oschina.net/lionsoul/ip2region

nginx+geo+fastcgi_params

phper가 hnphper 그룹 233415606에 합류한 것을 환영합니다

pecl install qqwry-beta
qqwry 당신은 그럴 자격이 있어요.
실제로 IP는 무작위로 나누어지지 않습니다. 조심하시면 찾을 수 있을 겁니다. IP 세그먼트와 지역은 밀접하게 연결되어 있습니다. 다음 도시와 도시의 IP는 연속적일 수 있습니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿