...
✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Знайдіть геолокацію за допомогою IP-адреси безкоштовно в PHP

46

Пошук геолокації та інформації про країну користувача необхідний для більшості веб-сайтів. Ймовірно, вам потрібно показувати різний вміст залежно від країни користувача, показувати різні ціни відповідно до валютних кодів країни тощо. У цих сценаріях вам потрібно знайти геолокацію користувача та відповідно обслуговувати вміст.

У цій статті я покажу вам, як знайти геолокацію за допомогою IP-адреси користувача в PHP. Ми збираємось використовувати послугу IP Geolocation API, яка є абсолютно безкоштовною.

Отримати геолокацію за допомогою IP-адреси

У PHP ми можемо скористатися послугою «API геолокації IP» через cURL та Guzzle. Обидва популярні, коли телефонують зовнішні служби API і отримують відповідь від них. Залежно від потоку вашого проекту ви можете використовувати cURL або Guzzle. В обох випадках нам спочатку потрібно отримати IP-адресу користувача. Отже, напишіть метод нижче, який поверне 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;
}

Використання cURL

CURL за замовчуванням поставляється з установкою PHP. Не потрібно встановлювати будь-який пакет окремо. Вам просто потрібно переконатися, що це увімкнено на вашому сервері, перш ніж використовувати його.

Через cURL ми надішлемо виклик кінцевій точці «API геолокації IP», надаючи IP-адресу користувача та надрукуємо відповідь.

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

Ви отримаєте результат у форматі JSON приблизно так, як показано нижче.

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

Guzzle – PHP-HTTP-клієнт для надсилання HTTP-запитів. Це альтернатива cURL. Він надає набагато чистий код і кращий досвід для розробників.

Спочатку вам потрібно встановити Guzzle за допомогою Composer, виконавши команду:

composer require guzzlehttp/guzzle

Далі напишіть код, який викликає API через 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);
}

Ось як ми отримуємо геолокацію за допомогою IP-адреси в PHP. Будь ласка, поділіться своїми думками чи пропозиціями в розділі коментарів нижче.

Пов’язані статті

Джерело запису: artisansweb.net

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі