вентилятор
Хорошего настроения!

Вычисляем по IP c помощью php.



Сегодня научимся вычислять по ip с помощью php. Пусть у нас есть IP посетителя. Какие данные мы можем узнать на сторонних сервисах ?


Представляю Вашему вниманию сервис www.geoplugin.net. Напишем код на PHP:


$client  = @$_SERVER[|'HTTP_CLIENT_IP'];
$forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
$remote  = @$_SERVER['REMOTE_ADDR'];
 
if(filter_var($client, FILTER_VALIDATE_IP)) $ip = $client;
elseif(filter_var($forward, FILTER_VALIDATE_IP)) $ip = $forward;
else $ip = $remote;
 
$ip_data = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=".$ip));    




Распечатаем объект $ip_data:

echo "<pre>";
var_dump($ip_data);
echo "</pre>";

Приведу некоторые параметры данного объекта:


object(stdClass)#1 (24) {
  ["geoplugin_city"]=>
  string(6) "Chern'"
  ["geoplugin_region"]=>
  string(17) "Tul'skaya Oblast'"
  ["geoplugin_regionCode"]=>
  string(3) "TUL"
  ["geoplugin_regionName"]=>
  string(17) "Tul'skaya Oblast'"
  string(6) "Russia"
  string(13) "Europe/Moscow"
  ["geoplugin_currencyCode"]=>
  string(3) "RUB"
}

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


Теперь можем использовать данную информацию


$region = "";

if($ip_data && $ip_data->geoplugin_countryName != null)
{
    $region = $ip_data->geoplugin_region;
}

Разберём некоторые моменты вышеприведённого кода. $_SERVER['REMOTE_ADDR'] - не всегда содержит точное значение. Если пользователь сидит через прокси, то в переменных $_SERVER['HTTP_CLIENT_IP'] и $_SERVER['HTTP_X_FORWARDED_FOR'], возможно, будет более точная информация. Стоит отметить, что если пользователь постарается, ему удастся скрыть реальный IP.


filter_var($client, FILTER_VALIDATE_IP) - фирменный метод проверить данные на корректность!


Теперь мой сайт будет в базу данных записывать не IP, а сразу регион, таким образом, будет наглядно откуда, примерно, данный пользователь.


На этом всё! Пока!



Счастливого программирования!


09-09-2018 в 19:24:50





Поддержать сайт:


Похожая статья:

Пишем скрипт для сайта ''Подписка по Email''

Сегодня напишем скрипт для сайта "Подписка по Email"...

Категория: Веб-разработка  Подкатегория: JavaScript
Дата: 04-02-2018 в 10:15:57 0


Комментарии:

Блин а где тут рецепт на пельмени
Анастасия Незабудка 19-02-2019 в 15:06:04

Вариант который Вы предложили имеет право на существование, просто при таком подходе существует вероятность провисания сайта если что то происходит с каналом или API сервис поставляющие geo-данные провисает или вовсе не доступен. Поэтому возможно имеет смысл рассмотреть для сайтов на PHP такие библиотеки как sypexgeo(для которой можно скачать базу данных с информацией о IP-адресах и разместить её на хостинге сайта) или если CMS Bitrix, WordPress или Joomla - то библиотеку nikolaevevgeGeoIp - которая уже имеет функционал для обновления в автоматическом режиме базы geo-информации, при этом последняя из указанных библиотек для перечисленных CMS не потребует даже каких либо настроек - данные для соединения с базой данных указывать не придётся. Вот пример использования библиотеки nikolaevevgeGeoIP:
Евгений 15-06-2022 в 07:39:02

Продолжение предыдущего комментария:
Евгений 15-06-2022 в 07:47:47

require_once($_SERVER["DOCUMENT_ROOT"] . "/includes/nikolaevevgeGeoIp.php");//подключение файла библиотеки
Евгений 15-06-2022 в 07:49:04

var_dump(nikolaevevgeGeoIp::get();//получение geo-информации о текущем посетителе сайта
Евгений 15-06-2022 в 07:49:44

Таким образом для использования библиотеки достаточно двух выше указанных строк. Файл библиотеки нужно предварительно разместить на хостинге Вашего сайта, код его актуальной версии можно скачать с сайта библиотеки по ссылке http://blog.ivru.net/?id=82
Евгений 15-06-2022 в 07:50:31

Спасибо за рекомендации!
Калужский Александр 15-06-2022 в 10:41:42



Оставить коментарий:



Напишите email, чтобы получать сообщения о новых комментариях (необязательно):


Задача против робота. Расположите картинки горизонтально:




Нажимая кнопку Отправить, Вы соглашаетесь с политикой конфиденциальности сайта.