Heim >Backend-Entwicklung >PHP-Tutorial >http – Gibt es in PHP eine Möglichkeit, den geografischen Standort basierend auf der IP-Adresse zu ermitteln, ohne eine Schnittstelle eines Drittanbieters zu verwenden? (Wie implementieren Schnittstellen von Drittanbietern diese Funktion?)

http – Gibt es in PHP eine Möglichkeit, den geografischen Standort basierend auf der IP-Adresse zu ermitteln, ohne eine Schnittstelle eines Drittanbieters zu verwenden? (Wie implementieren Schnittstellen von Drittanbietern diese Funktion?)

WBOY
WBOYOriginal
2016-08-18 09:16:001318Durchsuche

Ich bin sehr neugierig auf die Prinzipien von Tools, die den geografischen Standort auf der Grundlage von IP ermitteln. Was stellt jede Zahl in IP dar? Kann ich dies lokal erreichen, ohne eine Schnittstelle eines Drittanbieters zu verwenden?

Antwortinhalt:

Ich bin sehr neugierig auf die Prinzipien von Tools, die den geografischen Standort auf der Grundlage von IP ermitteln. Was stellt jede Zahl in IP dar? Kann ich dies lokal erreichen, ohne eine Schnittstelle eines Drittanbieters zu verwenden?

Was ist ein ISP? Vereinfacht ausgedrückt ist es wie bei Netzwerkanbietern wie China Telecom, China Unicom und China Mobile.
Sobald Sie einen Provider haben, können Sie online gehen. Wenn Sie online gehen, können Sie über MODEM eine temporäre IP (zyklischer Wechsel) erhalten.
Aber wird diese IP wirklich zufällig vergeben? Warum ist es so zufällig?
APNIC (Asia-Pacific Internet Network Information Center) ist diese Organisation. Es ist eines von fünf regionalen Internet-Registrierungsstellen weltweit, eine internationale Organisation, die IP-Adressen der Klasse B vergibt. Es bietet globale Vertriebs- und Registrierungsdienste zur Unterstützung des Internetbetriebs. Zu diesen Mitgliedern gehören Internetdienstanbieter, das National Internet Registry und ähnliche Organisationen in einer gemeinnützigen, auf Mitgliedschaft basierenden Organisation. APNIC ist für die Region Asien-Pazifik verantwortlich, die 56 Wirtschaftszonen umfasst.

Angenommen, APNIC weist China 1 Million IP-Adressen zu. Dann geht es nach China und wird über die oberste inländische Managementorganisation (ich weiß nicht, wer das ist) an Top-ISPs wie China Telecom, China Mobile, China Unicom und China Mobile verteilt. Dann verteilen diese ISPs sie nach ihren eigenen Regeln auf verschiedene Provinzen im ganzen Land und dann auf Städte, Kreise, Gemeinden usw.

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

Update

Die beliebteste IP-Bibliothek in China ist Innocence. Offizielle Website: http://www.cz88.net/ Sie können es in der oberen rechten Ecke herunterladen. Nach der Installation befindet sich im Verzeichnis eine .dat-Datei, die die IP-Zuweisungsdatenbank darstellt. Die Kombination der Nutzung von PHP mit der Nutzung anderer Sprachen findet sich auf Baidu.

PHP installiert die GeoIP-Erweiterung und -Datenbank, um das Land/die Stadt/den Breiten- und Längengrad des Besuchers basierend auf der IP zu erhalten
http://php.net/manual/zh/ref....
sudo apt-get install libgeoip-dev
pecl install geoip-1.1.0
Hinweis: Die Beta-Version muss die Versionsnummer angeben. Wenn es sich um PHP handelt, das von apt installiert wurde, installieren Sie einfach das Paket php5-geoip direkt:
zur php.ini

<code>extension=geoip.so
geoip.custom_directory="/usr/share/GeoIP"
</code>
Kostenloser Download der GeoLiteCity-Datenbank (18 MB nach Dekomprimierung):

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

Test:

php -a

<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>
PHP implementiert problemlos die Funktion „Personen in der Nähe“, bestimmt Längen- und Breitengrad basierend auf IP und berechnet Entfernung basierend auf Längen- und Breitengrad

Wenn Sie keine Schnittstelle eines Drittanbieters verwenden, müssen Sie für die Matching-Abfrage auch die vom Drittanbieter bereitgestellte IP-Bibliothek verwenden.

Aber es ist nicht 100 % genau.

Empfehlen Sie einen Dienstanbieter, der sowohl Schnittstellen als auch IP-Bibliotheken bereitstellt: http://www.ipip.net/

Sie alle haben ihre eigene IP-Bibliothek. Es sei denn, Sie verfügen auch lokal über eine IP-Bibliothek

Die Schnittstelle eines Drittanbieters kann geografische Standortinformationen über

abrufen. Tatsächlich wird die Datenbankzuordnung von ip lokal gespeichert kann bereitstellen. Wir bieten Dienstleistungen Dritter anip => address -info ipNatürlich können Sie es selbst implementieren, aber möglicherweise verfügen Sie nicht über eine so große Datenbankunterstützung

Wenn Sie immer noch keine Schnittstelle eines Drittanbieters anfordern möchten, können Sie eine herunterladen

Kostenlose GeoIP-Datenbank

Dies ist ein Datenbankproblem. Hier gibt es einen Open-Source-Code. http://git.oschina.net/lionsoul/ip2region

nginx geo fastcgi_params

Willkommen, PHPER, um der HNphpER-Gruppe 233415606 beizutreten

pecl install qqwry-beta
qqwry Du hast es verdient.
IP ist eigentlich nicht zufällig aufgeteilt. Wenn Sie vorsichtig sind, werden Sie es finden. Das IP-Segment und die Region sind eng miteinander verbunden. Die IPs Ihrer nächsten Stadt und Ihrer Stadt können aufeinander folgen.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn