Как я могу получить 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();