...
✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Leidke geograafiline asukoht, kasutades PHP-s tasuta IP-aadressi

30

Kasutaja geograafilise asukoha ja riigi teabe leidmine on vajalik enamiku veebisaitide jaoks. Tõenäoliselt peate näitama erinevat sisu vastavalt kasutaja riigile, näitama erinevaid hindu vastavalt riigi valuutakoodidele jne. Nende stsenaariumide korral peate leidma kasutaja geograafilise asukoha ja esitama sisu vastavalt.

Selles artiklis näitan teile, kuidas leida geograafilist asukohta PHP-s oleva kasutaja IP-aadressi abil. Kasutame IP Geolocation API teenust, mis on täiesti tasuta.

Geograafilise asukoha hankimine IP-aadressi abil

PHP-s saame kasutada "IP Geolocation API" teenust cURLi ja Guzzle’i kaudu. Mõlemad on populaarsed helistamiseks välistele API-teenustele ja vastuse saamiseks. Sõltuvalt teie projekti käigust võite kasutada kas cURLi või Guzzle’i. Mõlemal juhul peame kõigepealt hankima kasutaja IP-aadressi. Niisiis, kirjutage allpool toodud meetod, mis tagastab IP-aadressi.

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

Kasutades cURL-i

CURL on vaikimisi kaasas PHP installiga. Ühtegi paketti pole vaja eraldi installida. Enne selle kasutamist peate lihtsalt veenduma, et see on teie serveris lubatud.

CURL-i kaudu helistame kasutaja IP-aadressi andvale IP-geolokatsiooni API lõpp-punktile ja printime vastuse.

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

Saad väljundi JSON-vormingus umbes nagu allpool.

{
   "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’i kasutamine

Guzzle on PHP HTTP klient HTTP-päringute saatmiseks. See on alternatiiv curlile. See pakub arendajatele palju puhast koodi ja paremat kogemust.

Esmalt peate helilooja abil installima Guzzle’i, käivitades käsu:

composer require guzzlehttp/guzzle

Järgmisena kirjutage kood, mis kutsub API-d läbi Guzzle’i.

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

Nii saame geograafilise asukoha, kasutades IP-aadressi PHP-s. Palun jagage oma mõtteid või ettepanekuid allpool olevas kommentaaride jaotises.

seotud artiklid

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem