Пожалуй, каждый опытный пользователь в сети интернет знает о том, что подключившись через прокси-сервер можно в некотором роде остаться за занавесом, не светя своим реальным 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; }
Рассказывать о том, как работает функция, думаю не нужно, т.к. там и так всё понятно и без этого.
Спасибо! =)
Дак не сработает это:
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
Если IP прокси не пустой{ $ip = ip прокси }
И где тут определение реального IP ??