Мабуть, кожен досвідчений користувач у мережі інтернет знає про те, що підключившись через проксі-сервер можна в деякому роді залишитися за завісою, не світячи своїм реальним IP адресою на сайтах. Клієнт підключається до інтернету через проксі-сервер, потім відкриває ресурси, і традиційно більша частина сайтів дізнається IP адресу користувача через глобальну змінну $_SERVER[‘REMOTE_ADDR’]. Тут є підводні камені, напевно, як і в будь-якій справі. Справа в тому, що якщо підключення клієнта відбувається через проксі-сервер, то в глобальній змінній $_SERVER[‘REMOTE_ADDR’] перебуватиме IP-адресу проксі-сервера, через який зайшов користувач, а не реальний IP користувача.

Спробувати дізнатися реальний IP-адресу машини клієнта в PHP можна через додаткові змінні HTTP_CLIENT_IP і HTTP_X_FORWARDER_FOR. Розглянемо приклад простого коду, в якому робиться спроба визначити дійсну IP адреса користувача, шляхом елементарних перевірок. В цілях зручності використання код оформлений у вигляді функції.

Функція для визначення реального IP-адреси:

function getIP(){
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;
}

Розповідати про те, як працює функція, думаю не потрібно, оскільки там і так все зрозуміло і без цього.

Додав: htmaker, 13.09.2015 р.
(2 голосів, середній: 2,50 із 5)

Завантаження…

Діліться з друзями:

См. також:


Пісочниця для PHP
Рубрика: PHP, Інструменти

Конфіг файли
Рубрика: PHP

Установка XCache в Linux CentOS
Рубрика: Linux, PHP

Використання SOAP в PHP
Рубрика: PHP

Встановлення PHP Soap на CentOS
Рубрика: Linux, PHP

Обсяг даних в зручному форматі на PHP
Рубрика: PHP

Транслітерація символів на PHP
Рубрика: PHP

Як перетворити URL-рядок в масив?
Рубрика: PHP

Добірка шаблонів регулярних виразів
Рубрика: PHP

Коментарі

  • Хусан пише:
    27.12.2015 в 00:04

    Спасибі! =)

    Відповісти

  • huise пише:
    30.01.2017 у 02:18

    Дак не спрацює це:
    elseif (!empty($_SERVER[‘HTTP_X_FORWARDED_FOR’])){
    $ip=$_SERVER[‘HTTP_X_FORWARDED_FOR’];

    Якщо IP проксі не порожній{ $ip = ip проксі }

    І де тут визначення реального IP ??

    Відповісти