Как я могу получить IP-адрес систем в локальной сети, которые получают доступ к веб-странице с локального сервера с помощью php

У меня есть локальная сеть, которая подключена к Интернету через прокси-сервер, IP-адрес прокси-сервера 192.168.0.1, Всем системам в сети IP-адрес назначается вручную, например 192.168.0-6.1-255, маска подсети 255.255.248.0, Default gateway 192.168.0.1

и я создал другой сервер в локальной сети для локального доступа к моему сайту, и его IP-адрес 192.168.0.25, Маска подсети 255.255.255.0, шлюз по умолчанию 192.168.0.25

Все системы в локальной сети теперь могут получить доступ к веб-сайту, используя адрес

http://192.168.0.25/

Я должен отслеживать все системы, обращающиеся к моему веб-сайту, поэтому я использовал функцию $_SERVER['REMOTE_ADDR'] в php. Но я получаю IP-адрес всей системы, которая обращается к моему сайту, так же, как IP-адрес прокси-сервера (192.168.0.1).

Пожалуйста, помогите мне получить правильный IP-адрес каждой системы.

2 ответа

Попробуй это

if (!empty($_SERVER['HTTP_CLIENT_IP'])) {   //check ip from share internet
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {   //to check ip is pass from proxy
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }
function getRealIpAddr()
{
    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;
}

echo $userIP = getRealIpAddr();
Другие вопросы по тегам