Trova la geolocalizzazione utilizzando l’indirizzo IP gratuitamente in PHP
Trovare la geolocalizzazione e le informazioni sul paese di un utente è necessario per la maggior parte dei siti web. Probabilmente devi mostrare contenuti diversi in base al paese di un utente, mostrare prezzi diversi in base ai codici valuta del paese, ecc. In questi scenari, devi trovare la geolocalizzazione di un utente e servire i contenuti di conseguenza.
In questo articolo, ti mostro come trovare la geolocalizzazione utilizzando l’indirizzo IP di un utente in PHP. Utilizzeremo il servizio API di geolocalizzazione IP che è completamente gratuito.
Ottieni la geolocalizzazione utilizzando l’indirizzo IP
In PHP possiamo utilizzare il servizio di ‘IP Geolocation API’ tramite cURL e Guzzle. Entrambi sono popolari per chiamare servizi API esterni e ottenere la risposta da esso. A seconda del flusso del tuo progetto puoi usare cURL o Guzzle. In entrambi i casi, dobbiamo prima ottenere l’indirizzo IP dell’utente. Quindi, scrivi il metodo seguente che restituirà un indirizzo IP.
<?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;
}
Usando cURL
Il cURL viene fornito per impostazione predefinita con l’installazione di PHP. Non è necessario installare alcun pacchetto separatamente. Devi solo assicurarti che sia abilitato sul tuo server prima di usarlo.
Tramite cURL, chiameremo l’endpoint di "IP Geolocation API" fornendo l’indirizzo IP dell’utente e stamperemo la risposta.
<?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);
Otterrai l’output in formato JSON come di seguito.
{
"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"
}
Usando Guzzle
Guzzle è un client HTTP PHP per l’invio di richieste HTTP. È un’alternativa a cURL. Fornisce un codice molto pulito e un’esperienza migliore per gli sviluppatori.
All’inizio, devi installare Guzzle usando il Composer eseguendo il comando:
composer require guzzlehttp/guzzle
Quindi, scrivi il codice sotto che chiama l’API tramite Guzzle.
<?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);
}
Ecco come otteniamo la geolocalizzazione utilizzando l’indirizzo IP in PHP. Si prega di condividere i tuoi pensieri o suggerimenti nella sezione commenti qui sotto.
articoli Correlati
- Libreria Laravel Geoip – Scopri la geolocalizzazione usando l’indirizzo IP
- Come ottenere la geolocalizzazione dall’IP in PHP
- Come utilizzare Guzzle: un client HTTP PHP per l’invio di richieste HTTP