В PHP переменная $_SERVER
— это суперглобальная переменная, содержащая информацию о сервере и среде выполнения. Одним из наиболее распространенных случаев использования этой переменной является получение IP-адреса клиента, отправляющего запрос. В этой статье блога мы рассмотрим различные методы извлечения IP-адреса с помощью $_SERVER
в PHP. Итак, хватайте чашечку кофе и начнем!
Метод 1: использование $_SERVER['REMOTE_ADDR']
Самый простой способ получить IP-адрес — получить доступ к ключу REMOTE_ADDR
переменной $_SERVER
.. Этот метод возвращает IP-адрес клиента, сделавшего запрос.
$ip = $_SERVER['REMOTE_ADDR'];
echo "Client IP address: " . $ip;
Метод 2: обработка прокси с помощью $_SERVER['HTTP_X_FORWARDED_FOR']
Если вы находитесь за прокси-сервером, IP-адрес клиента может храниться в заголовке X-Forwarded-For
. Доступ к нему можно получить с помощью клавиши HTTP_X_FORWARDED_FOR
.
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
echo "Client IP address (proxy): " . $ip;
Метод 3: проверка $_SERVER['HTTP_CLIENT_IP']
Некоторые клиенты могут отправлять свой IP-адрес с использованием заголовка Client-IP
. Вы можете получить его, нажав клавишу HTTP_CLIENT_IP
.
$ip = $_SERVER['HTTP_CLIENT_IP'];
echo "Client IP address (client IP header): " . $ip;
Метод 4: определение IP-адреса по $_SERVER['HTTP_CF_CONNECTING_IP']
(Cloudflare)
Если ваш веб-сайт работает под управлением Cloudflare, фактический IP-адрес клиента можно найти в заголовке CF-Connecting-IP
.
$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
echo "Client IP address (Cloudflare): " . $ip;
Метод 5: извлечение IP-адреса из $_SERVER['HTTP_X_REAL_IP']
(Nginx)
На веб-сервере Nginx заголовок X-Real-IP
может содержать IP-адрес клиента.
$ip = $_SERVER['HTTP_X_REAL_IP'];
echo "Client IP address (Nginx): " . $ip;
Метод 6: использование $_SERVER['REMOTE_HOST']
для разрешения имени хоста.
Если вы хотите разрешить имя хоста клиента по IP-адресу, вы можете использовать ключ REMOTE_HOST
.
$hostname = $_SERVER['REMOTE_HOST'];
echo "Client hostname: " . $hostname;
Метод 7. Извлечение IP-адреса из $_SERVER['HTTP_X_CLUSTER_CLIENT_IP']
Некоторые балансировщики нагрузки могут хранить IP-адрес клиента в заголовке X-Cluster-Client-IP
. Доступ к нему можно получить с помощью клавиши HTTP_X_CLUSTER_CLIENT_IP
.
$ip = $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'];
echo "Client IP address (load balancer): " . $ip;
Метод 8: использование $_SERVER['HTTP_FORWARDED']
и $_SERVER['HTTP_FORWARDED_FOR']
Заголовки Forwarded
и Forwarded-For
могут содержать клиентские IP-адрес, когда запросы проходят через прокси-серверы или шлюзы.
$ip = $_SERVER['HTTP_FORWARDED_FOR'] ?? $_SERVER['HTTP_FORWARDED'];
echo "Client IP address (forwarded): " . $ip;
Метод 9: анализ $_SERVER['HTTP_VIA']
на предмет информации о прокси
Заголовок Via
может предоставлять информацию о промежуточных прокси. Из него можно извлечь IP-адрес клиента.
$viaHeader = $_SERVER['HTTP_VIA'];
$ip = explode(", ", $viaHeader)[0];
echo "Client IP address (via header): " . $ip;
Метод 10: использование $_SERVER['REMOTE_PORT']
в качестве номера порта
Если вам также нужен номер порта, с которого подключается клиент, вы можете получить к нему доступ с помощью клавиши REMOTE_PORT
.
$port = $_SERVER['REMOTE_PORT'];
echo "Client port number: " . $port;
В этой статье мы рассмотрели десять различных методов извлечения IP-адреса с помощью переменной $_SERVER
в PHP. В зависимости от конфигурации вашего сервера и наличия прокси-серверов разные ключи в $_SERVER
могут предоставлять IP-адрес клиента. Используя эти методы, вы можете эффективно получать IP-адрес и работать с ним в своих приложениях PHP.