Ich möchte das Land der Besucher über ihre IP erhalten ... Im Moment benutze ich dies ( http://api.hostip.info/country.php?ip= ......)
Hier ist mein Code:
<?php
if (isset($_SERVER['HTTP_CLIENT_IP']))
{
$real_ip_adress = $_SERVER['HTTP_CLIENT_IP'];
}
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$real_ip_adress = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$real_ip_adress = $_SERVER['REMOTE_ADDR'];
}
$cip = $real_ip_adress;
$iptolocation = 'http://api.hostip.info/country.php?ip=' . $cip;
$creatorlocation = file_get_contents($iptolocation);
?>
Nun, es funktioniert einwandfrei, aber die Sache ist, dass dies den Ländercode wie USA oder CA zurückgibt und nicht den gesamten Ländernamen wie USA oder Kanada.
Gibt es eine gute Alternative zu hostip.info?
Ich weiß, dass ich nur einen Code schreiben kann, der diese beiden Buchstaben schließlich in einen ganzen Ländernamen umwandelt, aber ich bin einfach zu faul, um einen Code zu schreiben, der alle Länder enthält ...
PS: Aus irgendeinem Grund möchte ich keine vorgefertigte CSV-Datei oder keinen Code verwenden, der diese Informationen für mich abruft, so etwas wie vorgefertigten ip2country-Code und CSV.
quelle
$real_ip_address
wird immer ignoriert. Denken Sie jedoch daran, dass derX-Forwarded-For
HTTP-Header extrem leicht gefälscht werden kann und dass es Proxys wie www.hidemyass.comhttps://www.iplocate.io/api/lookup/8.8.8.8
- Haftungsausschluss: Ich führe diesen Dienst aus.Antworten:
Probieren Sie diese einfache PHP-Funktion aus.
Wie benutzt man:
Beispiel 1: Abrufen der IP-Adressdaten des Besuchers
Beispiel 2: Details zu einer beliebigen IP-Adresse abrufen. [IPV4 & IPV6 unterstützen]
quelle
file_get_contents()
. Überprüfen Sie einfach Ihre error_log-Datei. Problemumgehung: Siehe meine Antwort.Sie können eine einfache API von http://www.geoplugin.net/ verwenden.
Verwendete Funktion
Ausgabe
Sie haben so viele Möglichkeiten, mit denen Sie herumspielen können
Vielen Dank
:) :)
quelle
Ich habe Chandras Antwort versucht, aber meine Serverkonfiguration erlaubt file_get_contents () nicht
PHP Warning: file_get_contents() URL file-access is disabled in the server configuration
Ich habe Chandras Code so geändert, dass er auch für solche Server mit cURL funktioniert:
Hoffentlich hilft das ;-)
quelle
Sie können http://api.hostip.info/?ip=123.125.114.144 aufrufen , um die Informationen abzurufen , die in XML dargestellt werden.
quelle
Verwenden Sie MaxMind GeoIP (oder GeoIPLite, wenn Sie nicht bereit sind zu zahlen).
quelle
Verwenden Sie folgende Dienste
1) http://api.hostip.info/get_html.php?ip=12.215.42.19
2)
3) http://ipinfodb.com/ip_location_api.php
quelle
Schauen Sie sich php-ip-2-country von code.google an. Die von ihnen bereitgestellte Datenbank wird täglich aktualisiert, sodass keine Verbindung zu einem externen Server hergestellt werden muss, um zu überprüfen, ob Sie Ihren eigenen SQL Server hosten. Mit dem Code müssten Sie also nur Folgendes eingeben:
Beispielcode (aus der Ressource)
Ausgabe
quelle
Wir können geobytes.com verwenden, um den Standort mithilfe der Benutzer-IP-Adresse abzurufen
Es werden Daten wie diese zurückgegeben
Funktion zum Abrufen der Benutzer-IP
quelle
Probieren Sie diesen einfachen einzeiligen Code aus. Sie erhalten Land und Stadt der Besucher von ihrer IP-Remote-Adresse.
quelle
Sie können einen Webdienst von http://ip-api.com
in Ihrem PHP-Code verwenden, gehen Sie wie folgt vor:
Die Abfrage enthält viele weitere Informationen:
quelle
Es gibt eine gut gepflegte Flat-File-Version der IP-> Länderdatenbank, die von der Perl-Community bei CPAN verwaltet wird
Für den Zugriff auf diese Dateien ist kein Datenserver erforderlich, und die Daten selbst sind ungefähr 515 KB groß
Higemaru hat einen PHP-Wrapper geschrieben, um mit diesen Daten zu kommunizieren: php-ip-country-fast
quelle
Viele verschiedene Möglichkeiten ...
Lösung 1:
Ein Drittanbieter-Service, den Sie verwenden können, ist http://ipinfodb.com . Sie bieten Hostnamen, Geolocation und zusätzliche Informationen.
Registrieren Sie sich hier für einen API-Schlüssel: http://ipinfodb.com/register.php . Auf diese Weise können Sie Ergebnisse von ihrem Server abrufen, ohne dies funktioniert es nicht.
Kopieren Sie den folgenden PHP-Code und fügen Sie ihn ein:
Nachteil:
Zitat von ihrer Website:
Lösung 2:
Diese Funktion gibt den Ländernamen über den Dienst http://www.netip.de/ zurück.
Ausgabe:
quelle
Mein Dienst ipdata.co bietet den Ländernamen in 5 Sprachen! Ebenso wie Organisation, Währung, Zeitzone, Anrufcode, Flagge, Mobilfunkanbieter-Daten, Proxy-Daten und Statusdaten des Tor-Exit-Knotens von einer beliebigen IPv4- oder IPv6-Adresse.
Es ist auch extrem skalierbar mit 10 Regionen auf der ganzen Welt, die jeweils> 10.000 Anfragen pro Sekunde verarbeiten können!
Die Optionen umfassen; Englisch (en), Deutsch (de), Japanisch (ja), Französisch (fr) und vereinfachtes Chinesisch (za-CH)
quelle
Ich bin mir nicht sicher, ob dies ein neuer Dienst ist, aber jetzt (2016) ist der einfachste Weg in PHP, den PHP-Webdienst von Geoplugin zu verwenden: http://www.geoplugin.net/php.gp :
Grundlegende Verwendung:
Sie bieten auch eine vorgefertigte Klasse: http://www.geoplugin.com/_media/webservices/geoplugin.class.php.tgz?id=webservices%3Aphp&cache=cache
quelle
else
nachelse
dem ein Fehler verursacht wird. Was haben Sie versucht zu verhindern? REMOTE_ADDR sollte jederzeit verfügbar sein?$_SERVER
: "Es gibt keine Garantie dafür, dass jeder Webserver diese bereitstellt. Server können einige weglassen oder andere bereitstellen, die hier nicht aufgeführt sind."Ich benutze
ipinfodb.com
API und bekomme genau das, wonach Sie suchen.Es ist völlig kostenlos, Sie müssen sich nur bei ihnen registrieren, um Ihren API-Schlüssel zu erhalten. Sie können ihre PHP-Klasse durch Herunterladen von ihrer Website einschließen oder das URL-Format verwenden, um Informationen abzurufen.
Folgendes mache ich:
Ich habe ihre PHP-Klasse in mein Skript aufgenommen und den folgenden Code verwendet:
Das ist es.
quelle
Sie können http://ipinfo.io/ verwenden , um Details zur IP-Adresse zu erhalten. Es ist einfach zu bedienen.
quelle
Durch
127.0.0.1
Besucher ersetzen IpAddress.Installationsanweisungen finden Sie hier . Lesen Sie diese, um zu erfahren, wie Sie Stadt, Bundesland, Land, Längengrad, Breitengrad usw. erhalten.
quelle
Ein Einzeiler mit einer IP-Adresse zur Länder- API
Beispiel:
https://ipapi.co/country_name/ - Ihr Land
https://ipapi.co/8.8.8.8/country_name/ - Land für IP 8.8.8.8
quelle
Ich habe eine kurze Antwort, die ich in einem Projekt verwendet habe. In meiner Antwort gehe ich davon aus, dass Sie eine Besucher-IP-Adresse haben.
quelle
Ich weiß, dass dies alt ist, aber ich habe hier ein paar andere Lösungen ausprobiert und sie scheinen veraltet zu sein oder geben einfach null zurück. So habe ich es gemacht.
Für die Verwendung
http://www.geoplugin.net/json.gp?ip=
ist keine Anmeldung oder Bezahlung des Dienstes erforderlich.Und wenn Sie zusätzliche Informationen darüber wünschen, ist dies eine vollständige Rückgabe von Json:
quelle
Ich habe eine Klasse geschrieben, die auf der Antwort "Chandra Nakka" basiert. Hoffentlich kann es den Leuten helfen, die Informationen von Geoplugin in einer Sitzung zu speichern, sodass das Laden beim Abrufen der Informationen viel schneller ist. Außerdem werden die Werte in einem privaten Array gespeichert, sodass das Abrufen im selben Code am schnellsten ist.
Beantworten Sie die 'op'-Frage mit dieser Klasse, die Sie anrufen können
Und die anderen verfügbaren Eigenschaften sind:
Rückkehr
quelle
Die User Country API hat genau das, was Sie brauchen. Hier ist ein Beispielcode, der file_get_contents () wie ursprünglich verwendet:
quelle
Mit der ipstack-Geo-API können Sie Land und Stadt der Besucher ermitteln. Sie müssen Ihre eigene ipstack-API erwerben und dann den folgenden Code verwenden:
Quelle: Holen Sie sich Besucher Land und Stadt in PHP mit der ipstack API
quelle
Dies ist nur ein Sicherheitshinweis zur Funktionalität
get_client_ip()
, da die meisten Antworten hier in der Hauptfunktion von enthalten sindget_geo_info_for_this_ip()
.Verlassen Sie sich nicht zu sehr auf den IP - Daten in den Request - Header wie
Client-IP
oderX-Forwarded-For
weil sie sehr leicht gefälscht werden können, aber Sie sollten auf dem Quell - IP der TCP - Verbindung angewiesen , die tatsächlich zwischen unserem Server und dem Client eingerichtet wird ,$_SERVER['REMOTE_ADDR']
wie er kann‘ nicht gefälscht werdenEs ist in Ordnung, das Land der gefälschten IP zu ermitteln. Beachten Sie jedoch, dass die Verwendung dieser IP in einem Sicherheitsmodell (z. B. Verbot der IP, die häufige Anforderungen sendet) das gesamte Sicherheitsmodell zerstört. IMHO Ich bevorzuge es, die tatsächliche Client-IP zu verwenden, auch wenn es die IP des Proxyservers ist.
quelle
Versuchen
quelle
Sie können meinen Dienst nutzen: https://SmartIP.io , der vollständige Ländernamen und Städtenamen aller IP-Adressen enthält. Wir legen auch Zeitzonen, Währung, Proxy-Erkennung, TOR-Knoten-Erkennung und Krypto-Erkennung offen.
Sie müssen sich nur anmelden und einen kostenlosen API-Schlüssel erhalten, der 250.000 Anfragen pro Monat ermöglicht.
Unter Verwendung der offiziellen PHP-Bibliothek wird der API-Aufruf zu:
Weitere Informationen finden Sie in der API-Dokumentation: https://smartip.io/docs
quelle
Ab 2019 kann die MaxMind-Länder-DB wie folgt verwendet werden:
Quelle: https://github.com/maxmind/MaxMind-DB-Reader-php
quelle
Wäre das akzeptabel? reines PHP
ref: https://www.php.net/manual/en/function.geoip-country-code-by-name.php
quelle