Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

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

Короткий ответ

Адрес соединения лежит в $_SERVER['REMOTE_ADDR']:

<?php
 
echo $_SERVER['REMOTE_ADDR'];

За прокси или балансировщиком

Если сайт стоит за прокси, REMOTE_ADDR — адрес прокси, а настоящий передаётся в заголовке X-Forwarded-For. Читайте его, только если запрос пришёл от вашего прокси: посетитель может подделать заголовок.

<?php
 
$trustedProxies = ['10.0.0.1'];
$ip = $_SERVER['REMOTE_ADDR'];
 
if (in_array($ip, $trustedProxies, true) && isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $ip = trim(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0]);
}

Проверка адреса

filter_var() проверяет, что строка — правильный IP-адрес:

<?php
 
var_dump(filter_var('192.168.1.10', FILTER_VALIDATE_IP) !== false);
var_dump(filter_var('999.1.1.1', FILTER_VALIDATE_IP) !== false);

Результат:

bool(true)
bool(false)

Функции из этого ответа

  • filter_var — Проверяет или очищает значение по заданному правилу.
  • explode — Разбивает строку на массив по разделителю.
  • trim — Удаляет пробелы и другие символы с начала и конца строки.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.