О web-разработке
и даже немного больше...

Как узнать реальный IP-адрес клиента в PHP

Пожалуй, каждый опытный пользователь в сети интернет знает о том, что подключившись через прокси-сервер можно в некотором роде остаться за занавесом, не светя своим реальным 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;
}

Рассказывать о том, как работает функция, думаю не нужно, т.к. там и так всё понятно и без этого.

Опубликован: 13.09.2015 г.

См. также:

Редакторы кода для PHP
Как просмотреть время загрузки страницы в PHP?
Генерация QR-кода в PHP
Загрузка файлов на сервер посредством Ajax
Импорт записей из Excel в WordPress
Парсинг XML в PHP
Установка IonCube на XAMPP
Создание PDF файлов в PHP

Комментарии

  1. Хусан пишет:

    Спасибо! =)

  2. huise пишет:

    Дак не сработает это:
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
    $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];

    Если IP прокси не пустой{ $ip = ip прокси }

    И где тут определение реального IP ??

Добавить комментарий для Хусан Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Комментарии
  • Загрузка...
Друзья сайта