WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Найдите геолокацию с помощью IP-адреса бесплатно в PHP

138

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

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

Получить геолокацию с помощью IP-адреса

В PHP мы можем использовать сервис «IP Geolocation API» через 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 мы вызовем конечную точку IP Geolocation API, предоставив 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 – это HTTP-клиент PHP для отправки 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 для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее