Wie kann ich den aktuellen Standort eines Benutzers anhand der IP-Adresse bestimmen (ich denke, es funktioniert so).
Rufen Sie den aktuellen Standort eines Benutzers ab
Jacek Francuz
<?php
$user_ip = getenv('REMOTE_ADDR');
$geo = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=$user_ip"));
$country = $geo["geoplugin_countryName"];
$city = $geo["geoplugin_city"];
?>
-
Geoplugin ist nicht die beste Plattform. Es ist auf 120 Aktionen pro Minute begrenzt. Es hat bei mir funktioniert, aber in letzter Zeit fing es an, 403 für alle Anfragen von meinem Server anzuzeigen. Wer weiß warum. (Ich habe diese 120 Verbindungen nicht in einer Minute hergestellt)
– Benutzer5147563
30. März 2017 um 17:18 Uhr
-
Nutzlos mit diesen Grenzen.
– Michael Rogers
9. Juni 2017 um 6:58 Uhr
Naveen DA
Bearbeitet
Ändern freegeoip.net hinein ipinfo.io
<?php
function get_client_ip()
{
$ipaddress="";
if (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
} else if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else if (isset($_SERVER['HTTP_X_FORWARDED'])) {
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
} else if (isset($_SERVER['HTTP_FORWARDED_FOR'])) {
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
} else if (isset($_SERVER['HTTP_FORWARDED'])) {
$ipaddress = $_SERVER['HTTP_FORWARDED'];
} else if (isset($_SERVER['REMOTE_ADDR'])) {
$ipaddress = $_SERVER['REMOTE_ADDR'];
} else {
$ipaddress="UNKNOWN";
}
return $ipaddress;
}
$PublicIP = get_client_ip();
$json = file_get_contents("http://ipinfo.io/$PublicIP/geo");
$json = json_decode($json, true);
$country = $json['country'];
$region = $json['region'];
$city = $json['city'];
?>
-
Während dieser Code die Frage beantworten kann, verbessert die Bereitstellung von zusätzlichem Kontext dazu, warum und/oder wie dieser Code die Frage beantwortet, seinen langfristigen Wert.
– Jay Blanchard
24. April 2017 um 19:31 Uhr
-
Gibt es eine Problemumgehung für localhost-Server? Meine IP-Adresse erscheint immer als ::1
– Vince
25. Dezember 2017 um 20:59 Uhr
-
@vince Localhost gibt immer ::1 IP-Adresse zurück
– Naveen DA
26. Dezember 2017 um 2:29 Uhr
-
Deprecation_message: “Dieser API-Endpunkt ist veraltet und funktioniert am 1. Juli 2018 nicht mehr. Weitere Informationen finden Sie unter: github.com/apilayer/freegeoip#readme“,
– Mose Schwartz
23. Mai 2018 um 17:09 Uhr
-
Wofür ist es notwendig, alle weitergeleiteten IPs zu überprüfen? Ich dachte nur checken
if(isset(HTTP_X_FORWARDED_FOR))
ist notwendig.– klediooo
18. Juli 2019 um 17:32 Uhr
Adnan Rasheed
<?php
$query = @unserialize (file_get_contents('http://ip-api.com/php/'));
if ($query && $query['status'] == 'success') {
echo 'Hey user from ' . $query['country'] . ', ' . $query['city'] . '!';
}
foreach ($query as $data) {
echo $data . "<br>";
}
?>
Probieren Sie diesen Code mit dieser Quelle aus. *Es klappt!
-
Tun oder nicht tun. Es gibt kein “versuchen”. A gute Antwort wird immer eine Erklärung dafür haben, was getan wurde und warum es auf diese Weise getan wurde, nicht nur für das OP, sondern für zukünftige Besucher von SO.
– Jay Blanchard
24. April 2017 um 19:31 Uhr
-
Ist es eine kostenlose API?
– Pisumathu
27. April 2022 um 7:46 Uhr
Bett
Versuchen Sie diesen Code mit der hostip.info Service:
$country=file_get_contents('http://api.hostip.info/get_html.php?ip=');
echo $country;
// Reformat the data returned (Keep only country and country abbr.)
$only_country=explode (" ", $country);
echo "Country : ".$only_country[1]." ".substr($only_country[2],0,4);
Venkat Sai
Da PHP auf einen Server angewiesen ist, kann der Standort in Echtzeit nicht bereitgestellt werden. Es kann nur ein statischer Standort angegeben werden. Es ist besser, sich nicht auf JavaScript für einen Standort zu verlassen, anstatt PHP zu verwenden.
Aber es ist notwendig, die JavaScript-Daten an PHP zu senden, damit sie für ein Programm auf dem Server leicht zugänglich sind.
Peter Mortensen
Eine IP-Adresse gibt Ihnen einen ziemlich unzuverlässigen Standort. Sie können den Standort beim Laden mit JavaScript per Ajax versehen, wenn es nicht unbedingt erforderlich ist, den Standort zunächst zu haben. (Außerdem muss der Benutzer Ihnen seine Zugriffsberechtigung erteilen.)
Peter Mortensen
Das alte Die freegeoip-API ist jetzt veraltet und wird am 01.07.2018 eingestellt.
Die neue API ist von ipstack. Sie müssen das Konto in ipstack erstellen. Dann können Sie den Zugriffsschlüssel in der API-URL verwenden.
$url = "http://api.ipstack.com/122.167.180.20?access_key=ACCESS_KEY&format=1";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXYPORT, 3128);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec($ch);
curl_close($ch);
$response = json_decode($response);
$city = $response->city; // You can get all the details like longitude, latitude from the '$response'.
Weitere Informationen finden Sie unter freegeoip (GitHub).
-
Dies ist ein kostenpflichtiger Dienst.
– Benutzer2060451
7. März 2019 um 2:00 Uhr
-
Die Frage bezieht sich nicht auf den kostenlosen Service
– lalithkumar
7. März 2019 um 6:30 Uhr
-
sie haben ein freies. begrenzte Stufe
– Geistesblitz
13. Juni 2021 um 17:55 Uhr
MaxMind GeoIP ist ein guter Dienst. Sie haben auch einen kostenlosen Suchdienst auf Stadtebene.
– gloma
22. März 2011 um 22:35 Uhr
Vielleicht möchten Sie einen Blick darauf werfen GeoIP Country Whois Locator gefunden am PHPKlassen.
– madkris24
22. März 2011 um 22:44 Uhr