...
✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Trova la geolocalizzazione utilizzando l’indirizzo IP gratuitamente in PHP

216

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

Fonte di registrazione: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More