...
✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Hitta Geolocation med IP-adress gratis i PHP

38

Att hitta geolokalisering och landinformation för en användare är nödvändig för de flesta webbplatser. Förmodligen måste du visa olika innehåll baserat på en användares land, visa olika priser enligt landets valutakoder etc. I dessa scenarier måste du hitta en användares geografiska placering och betjäna innehåll därefter.

I den här artikeln visar jag dig hur du hittar Geolocation med IP-adressen för en användare i PHP. Vi kommer att använda IP Geolocation API-tjänsten som är helt gratis.

Få Geolocation med IP-adress

I PHP kan vi använda tjänsten "IP Geolocation API" via cURL och Guzzle. Båda är populära att ringa externa API-tjänster och få svaret ur det. Beroende på ditt projekts flöde kan du använda antingen cURL eller Guzzle. I båda fallen måste vi först få användarens IP-adress. Så skriv nedanstående metod som returnerar en IP-adress.

<?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;
}

Använda cURL

CURL kommer som standard med PHP-installationen. Inget behov av att installera något paket separat. Du behöver bara se till att den är aktiverad på din server innan du använder den.

Genom cURL ringer vi till slutpunkten för "IP Geolocation API" som ger användarens IP-adress och skriver ut svaret.

<?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);

Du får utdata i JSON-format ungefär som nedan.

{
   "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"
 }

Använda Guzzle

Guzzle är en PHP HTTP-klient för att skicka HTTP-förfrågningar. Det är ett alternativ till CURL. Det ger mycket ren kod och en bättre upplevelse för utvecklare.

Först måste du installera Guzzle med Composer genom att köra kommandot:

composer require guzzlehttp/guzzle

Skriv sedan koden nedan som anropar API: et via 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);
}

Så här får vi Geolocation med IP-adressen i PHP. Dela dina tankar eller förslag i kommentarfältet nedan.

relaterade artiklar

Inspelningskälla: artisansweb.net

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer