✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Etsi maantieteellinen sijainti käyttämällä IP-osoitetta ilmaiseksi PHP: stä

43

Käyttäjän paikannus- ja maakohtaisten tietojen etsiminen on välttämätöntä useimmille verkkosivustoille. Luultavasti sinun on näytettävä erilaista sisältöä käyttäjän maan perusteella, näytettävä eri hinnat maan valuuttakoodien mukaan jne. Näissä tilanteissa sinun on löydettävä käyttäjän maantieteellinen sijainti ja näytettävä sisältö vastaavasti.

Tässä artikkelissa näytän sinulle, kuinka voit löytää maantieteellisen sijainnin käyttämällä käyttäjän IP-osoitetta PHP: ssä. Aiomme käyttää IP Geolocation API -palvelua, joka on täysin ilmainen.

Hanki maantieteellinen sijainti IP-osoitteen avulla

PHP: ssä voimme käyttää ‘IP Geolocation API’ -palvelua cURL: n ja Guzzlen kautta. Molemmat ovat suosittuja soittamaan ulkoisiin API-palveluihin ja saamaan vastauksen siitä. Projektisi kulusta riippuen voit käyttää joko cURL tai Guzzle. Molemmissa tapauksissa meidän on ensin hankittava käyttäjän IP-osoite. Joten kirjoita alla oleva menetelmä, joka palauttaa IP-osoitteen.

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

Käyttämällä cURL

CURL tulee oletusarvoisesti PHP-asennuksen mukana. Mitään pakettia ei tarvitse asentaa erikseen. Sinun on vain varmistettava, että se on käytössä palvelimellasi ennen sen käyttöä.

CURL: n kautta soitamme puhelun ‘IP Geolocation API’ -päätteelle, joka antaa käyttäjän IP-osoitteen ja tulostaa vastauksen.

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

Saat tuloksen JSON-muodossa jotain alla olevasta.

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

Guzzlen käyttö

Guzzle on PHP HTTP -asiakas HTTP-pyyntöjen lähettämiseen. Se on vaihtoehto cURL: lle. Se tarjoaa paljon puhdasta koodia ja paremman kokemuksen kehittäjille.

Aluksi sinun on asennettava Guzzle Composerin avulla suorittamalla komento:

composer require guzzlehttp/guzzle

Kirjoita seuraavaksi koodi, joka kutsuu API: ta Guzzlen kautta.

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

Näin saamme maantieteellisen sijainnin käyttämällä PHP: n IP-osoitetta. Ole hyvä ja jaa ajatuksiasi tai ehdotuksiasi alla olevassa kommenttiosassa.

Aiheeseen liittyvät artikkelit

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja