Finden Sie Geolocation mit IP-Adresse kostenlos in PHP
Das Auffinden von Geolocation- und Länderinformationen eines Benutzers ist für die meisten Websites erforderlich. Wahrscheinlich müssen Sie unterschiedliche Inhalte basierend auf dem Land eines Benutzers anzeigen, unterschiedliche Preise gemäß den Währungscodes des Landes usw. anzeigen. In diesen Szenarien müssen Sie den Geostandort eines Benutzers finden und Inhalte entsprechend bereitstellen.
In diesem Artikel zeige ich Ihnen, wie Sie Geolocation mithilfe der IP-Adresse eines Benutzers in PHP finden. Wir werden den IP-Geolocation-API-Dienst verwenden, der völlig kostenlos ist.
Geolokalisierung mit IP-Adresse abrufen Get
In PHP können wir den Dienst der ‘IP Geolocation API’ über cURL und Guzzle nutzen. Beide sind beliebt, um externe API-Dienste aufzurufen und die Antwort daraus zu erhalten. Je nach Ablauf Ihres Projekts können Sie entweder cURL oder Guzzle verwenden. In beiden Fällen benötigen wir zunächst die IP-Adresse des Benutzers. Schreiben Sie also die folgende Methode, die eine IP-Adresse zurückgibt.
<?php
// get user's IP address
function getUserIpAddr() {
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
return $ip;
}
cURL verwenden
Die cURL wird standardmäßig mit der PHP-Installation mitgeliefert. Sie müssen kein Paket separat installieren. Sie müssen nur sicherstellen, dass es auf Ihrem Server aktiviert ist, bevor Sie es verwenden.
Über cURL rufen wir den Endpunkt der ‘IP Geolocation API’ auf, geben die IP-Adresse des Benutzers an und drucken die Antwort.
<?php
$ip_address = getUserIpAddr();
$url = "https://api.ipgeolocationapi.com/geolocate/$ip_address";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$response = curl_exec($ch);
$arr_result = json_decode($response);
print_r($arr_result);
Sie erhalten die Ausgabe im JSON-Format etwa wie folgt.
{
"continent": "Asia",
"address_format": "{{recipient}}n{{street}}n{{region}}n{{city}} {{postalcode}}n{{country}}",
"alpha2": "IN",
"alpha3": "IND",
"country_code": "91",
"international_prefix": "00",
"ioc": "IND",
"gec": "IN",
"name": "India",
"national_destination_code_lengths": [
2
],
"national_number_lengths": [
10
],
"national_prefix": "0",
"number": "356",
"region": "Asia",
"subregion": "Southern Asia",
"world_region": "APAC",
"un_locode": "IN",
"nationality": "Indian",
"postal_code": true,
"unofficial_names": [
"India",
"Indien",
"Inde",
"インド"
],
"languages_official": [
"hi",
"en"
],
"languages_spoken": [
"hi",
"en"
],
"geo": {
"latitude": 20.593684,
"latitude_dec": "23.4060115814209",
"longitude": 78.96288,
"longitude_dec": "79.45809173583984",
"max_latitude": 35.5087008,
"max_longitude": 97.3953587,
"min_latitude": 6.4626999,
"min_longitude": 68.1097,
"bounds": {
"northeast": {
"lat": 35.5087008,
"lng": 97.3953587
},
"southwest": {
"lat": 6.4626999,
"lng": 68.1097
}
}
},
"currency_code": "INR",
"start_of_week": "monday"
}
Guzzle verwenden
Guzzle ist ein PHP-HTTP-Client zum Senden von HTTP-Anfragen. Es ist eine Alternative zu cURL. Es bietet viel sauberen Code und eine bessere Erfahrung für Entwickler.
Zuerst müssen Sie Guzzle mit dem Composer installieren, indem Sie den folgenden Befehl ausführen:
composer require guzzlehttp/guzzle
Schreiben Sie als Nächstes den folgenden Code, der die API über Guzzle aufruft.
<?php
require_once "vendor/autoload.php";
use GuzzleHttpClient;
$ip_address = getUserIpAddr();
$client = new Client();
$response = $client->request('GET', 'https://api.ipgeolocationapi.com/geolocate/'.$ip_address);
if($response->getStatusCode() == 200) {
$body = $response->getBody();
$arr_body = json_decode($body);
print_r($arr_body);
}
Auf diese Weise erhalten wir die Geolokalisierung mithilfe der IP-Adresse in PHP. Bitte teilen Sie Ihre Gedanken oder Vorschläge im Kommentarbereich unten mit.
Zum Thema passende Artikel
- Laravel Geoip Library – Finden Sie die Geolokalisierung mithilfe der IP-Adresse heraus
- So erhalten Sie Geolokalisierung von IP in PHP
- So verwenden Sie Guzzle – Ein PHP-HTTP-Client zum Senden von HTTP-Anfragen