Php узнать ИП адрес

Как то раз, у меня появилась необходимость выдавать разный контент для клиентов из разных сетей. И мы, с моим многоуважаемым другом набросали для этой цели вот такой небольшой скриптик на php. Области применения можете придумывать сами. 🙂

[ тут был кривой и нерабочий код.. 🙂 ]
UPDATE:
И вот недавно выяснилось, что скрипт этот работает криво. Короче говоря, я немного поковырялся в нете, и нашёл более подходящий вариант, который я просто немного переделал:

$netlist = explode(«n», file_get_contents($_SERVER[‘DOCUMENT_ROOT’].’/networks.txt’)); // для удобства, сети размещены в файле столбиком. function checkip($ip, $nets) < foreach($nets as $network) < if(!empty($network))< $ip_arr = explode ( ‘/’ , $network ); $network_long = ip2long ( $ip_arr [ 0 ]); $x = ip2long ( $ip_arr [ 1 ]); $mask = long2ip ( $x ) == $ip_arr [ 1 ] ? $x : 0xffffffff > > >

и далее уже можно выполнять проверку, и редиректить клиентов туда, куда нужно, например, вот таким образом:

Как определить IP адрес пользователя


if(checkip($_SERVER[‘REMOTE_ADDR’], $netlist )) < header(‘location: http://int.site.com’.$_SERVER[‘REQUEST_URI’]); >else < header(‘location: http://ext.site.com’.$_SERVER[‘REQUEST_URI’]); >

Источник: ex.uz

Суперглобальная переменная $_SERVER

Переменная $_SERVER — это массив, содержащий информацию, такую как заголовки, пути и местоположения скриптов. Записи в этом массиве создаются веб-сервером.

Рассмотрим на примере как использовать суперглобальную переменную $_SERVER:

Пример

«; echo $_SERVER[‘SERVER_NAME’]; echo «
«; echo $_SERVER[‘HTTP_HOST’]; echo «
«; echo $_SERVER[‘HTTP_REFERER’]; echo «
«; echo $_SERVER[‘HTTP_USER_AGENT’]; echo «
«; echo $_SERVER[‘SCRIPT_NAME’]; ?>

В приведенном выше коде мы использовали элементы $_SERVER для получения некоторой информации. Получаем имя текущего файла, над которым мы работаем с помощью элемента PHP_SELF . Затем получаем имя сервера, используемое в настоящее время с использованием элемента SERVER_NAME . А затем получаем имя хоста через HTTP_HOST . HTTP_REFERER — адрес страницы (если есть), с которой браузер пользователя перешёл на эту страницу.

Читайте также:  Как списать кредиторскую задолженность при УСН в 1С

Рассмотрим описание значений глобального массива $_SERVER с примерами.

Параметры сервера

Элемент Описание
$_SERVER[‘SERVER_NAME’]Имя хоста, обычно совпадает с доменом (например, wm-school.ru)
$_SERVER[‘GATEWAY_INTERFACE’]Версия Common Gateway Interface (CGI), которую использует сервер (CGI/1.1)
$_SERVER[‘SERVER_SOFTWARE’]Название и версия сервера (Apache/2.4.7)
$_SERVER[‘SERVER_SIGNATURE’]Версия сервера и имя виртуального хоста, обычно пуста
$_SERVER[‘SERVER_PROTOCOL’]Имя и версия используемого HTTP протокола (HTTP/1.1)
$_SERVER[‘SERVER_ADDR’]IP-адрес сервера (127.0.0.1)
$_SERVER[‘SERVER_PORT’]Порт сервера (80)
$_SERVER[‘SERVER_ADMIN’]Значение из директивы конфигурационного файла Apache. На хостингах указывают контактный e-mail.

Параметры соединения

Элемент Описание
$_SERVER[‘HTTP_HOST’]Имя сервера, как правило, совпадает с доменом (например, wm-school.ru)
$_SERVER[‘HTTP_PORT’]Порт подключения (80)
$_SERVER[‘REMOTE_ADDR’]IP-адрес, с которого пользователь просматривает текущую страницу (64.246.37.238)
$_SERVER[‘REMOTE_HOST’]Удаленный хост, с которого пользователь просматривает текущую страницу
$_SERVER[‘REMOTE_PORT’]Порт на удаленной машине, который используется для связи с веб-сервером
$_SERVER[‘REQUEST_SCHEME’]Схема запроса (http)
$_SERVER[‘REQUEST_METHOD’]Метод запроса к странице (GET, POST, PUT)
$_SERVER[‘REQUEST_TIME’]Время запроса к серверу в Unix timestamp (1537962596)
$_SERVER[‘REQUEST_TIME_FLOAT’]Время запроса к серверу с точностью до микросекунд (1537962596.892)

Пути на сервере

Элемент Описание
$_SERVER[‘DOCUMENT_ROOT’]Директория корня сайта, в которой выполняется текущий скрипт (например, /wm-school.ru/scripts)
$_SERVER[‘CONTEXT_DOCUMENT_ROOT’]Появился в Apache2, то же самое что и DOCUMENT_ROOT
$_SERVER[‘PATH_INFO’]Содержит путь, содержащийся после имени скрипта (Например для адреса https://wm-school.ru/index.php/123 значение будет следующим: /123)
$_SERVER[‘ORIG_PATH_INFO’]Исходное значение переменной PATH_INFO перед обработкой PHP
$_SERVER[‘SCRIPT_NAME’]Путь и имя выполняемого скрипта (/index.php)
$_SERVER[‘PHP_SELF’]​Путь к исполняемому скрипту относительно корня сайта, обычно равен SCRIPT_NAME (/index.php)
$_SERVER[‘SCRIPT_FILENAME’]Абсолютный путь к исполняемому скрипту (/wm-school.ru/public_html/index.php)
$_SERVER[‘PATH’]/usr/local/bin:/usr/bin:/bin

Авторизация на .htpasswd

Элемент Описание
$_SERVER[‘AUTH_TYPE’]Метод HTTP аутентификации (например, Basic)
$_SERVER[‘REMOTE_USER’] и $_SERVER[‘PHP_AUTH_USER’]Логин пользователя
$_SERVER[‘PHP_AUTH_PW’]Пароль

HTTPS

Данные переменные появляются при HTTPS соединении:

Читайте также:  Может ли ИП работать без ккм

Вычисляем по IP. Какие данные можно вытянуть из ip адреса с помощью PHP? Разбираемся, выводим

$_SERVER[‘HTTPS’], $_SERVER[‘HTTP_X_HTTPS’], $_SERVER[‘REDIRECT_HTTPS’]

1 On

Элемент Описание
$_SERVER[‘HTTP_X_FORWARDED_PROTO’]https

URL

Значения в примерах приведены для адреса https://wm-school.ru/index.php?page=1 page=1 ключ=значение;. Данные доступны в переменной $_COOKIE (_ym_uid=xxx; _ym_d=xxx; PHPSESSID=xxx;)$_SERVER[‘HTTP_REFERER’]Адрес страницы, с которой браузер пользователя перешёл на текущую страницу (https://wm-school.ru/index.php)$_SERVER[‘HTTP_ACCEPT’]Содержимое заголовка Accept из текущего запроса (text/html, application/xhtml+xml, application/xml;q=0.9, image/webp, image/apng, */*; q=0.8)$_SERVER[‘HTTP_ACCEPT_ENCODING’]​HTTP заголовок переданный клиентом, говорящий о том какие алгоритмы сжатия он может понять (gzip, deflate)$_SERVER[‘HTTP_ACCEPT_LANGUAGE’]​Содержимое заголовка Accept-Language (ru-RU,ru; q=0.9,en-US; q=0.8,en; q=0.7)$_SERVER[‘HTTP_ACCEPT_CHARSET’]​Предпочтения клиента относительно кодировки (utf-8, iso-8859-1)$_SERVER[‘HTTP_CACHE_CONTROL’]​max-age=0$_SERVER[‘HTTP_UPGRADE_ INSECURE_REQUESTS’]​Браузер отправляет этот заголовок со значением 1, выражающий предпочтение клиента для зашифрованного ответа

Дамп переменной $_SERVER

Для тестирования, значения массива $_SERVER для разных клиентов можно скидывать в лог-файл:

file_put_contents(__DIR__ . ‘/server.log’, print_r($_SERVER, true) . PHP_EOL, FILE_APPEND);

Источник: www.wm-school.ru

Информация о пользователе на PHP — IP, браузер, операционная система, робот

Информация о пользователе на PHP - IP, браузер, операционная система, робот

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

На данный момент он выдает:

  1. Название браузера
  2. Версия браузера
  3. Название операционной системы
  4. Версия/ядро операционной системы
  5. IP посетителя
  6. проверка: зашел ли пользователь с браузера
  7. проверка: зашел ли пользователь с мобильного устройства
  8. Название марки/ос/браузера мобильного телефона, смартфона, планшета
  9. проверка: является ли посетитель роботом поисковых систем
  10. Какой поисковой системы принадлежит робот
Читайте также:  Свидетельство о гос регистрации ИП что это

Как работает PHP класс определение данных посетителя по user-agent

Из папки arrays загружаются ассоциативные массивы которые содержат аббревиатуры или короткие название браузеров, операционных систем или роботов которые встречаются в строке user-agent которую мы получаем от браузера.

После получения данных, динамично вызываются все методы которые имеют префикс set_ и заполняют переменные класса, т.к. только они являются публичными и можно вывести из за пределы видимости класса.

‘Flock’, ‘SeaMoney’ => ‘SeaMonkey’, ‘Chrome’ => ‘Chrome’, ‘Opera’ => ‘Opera’, ‘MSIE’ => ‘Internet Explorer’, ‘Internet Explorer’ => ‘Internet Explorer’, ‘Shiira’ => ‘Shiira’, ‘Firefox’ => ‘Firefox’, ‘Chimera’ => ‘Chimera’, ‘Phoenix’ => ‘Phoenix’, ‘Firebird’ => ‘Firebird’, ‘Camino’ => ‘Camino’, ‘Netscape’ => ‘Netscape’, ‘OmniWeb’ => ‘OmniWeb’, ‘Safari’ => ‘Safari’, ‘Mozilla’ => ‘Mozilla’, ‘Konqueror’ => ‘Konqueror’, ‘icab’ => ‘iCab’, ‘Lynx’ => ‘Lynx’, ‘Links’ => ‘Links’, ‘hotjava’ => ‘HotJava’, ‘amaya’ => ‘Amaya’, ‘IBrowse’ => ‘IBrowse’ ); ?>

Описание работы методов класса

Главный метод конструктор «__construct» в момент вызова класса AboutGuest он выполняется первым, тем самым играет ключевую роль в работе класса. Первым делом создает массивы данных для работы остальных методов. Объект $this->agent содежит в себе ничто иное как $_SERVER[‘HTTP_USER_AGENT’] которого мы получаем от браузера и из него вытаскиваем нужную нам информацию.

Метод $this->load( $file_and_array_name ) загрузчик

Рейтинг
( Пока оценок нет )
Загрузка ...
Бизнес для женщин