Всем привет. У меня такой вопрос - хотел добавить счетчик по ip-адресам, определяю ip так: $ip=$_SERVER['REMOTE_ADDR']; ну либо через getenv() Так вот он все входящие запросы пишет как с одного и того же ВНУТРЕННЕГО IP. Я так понял что видимо это какой-то ip хостера, через который идут все запросы. Как обойти сию несправедливость и сделать норм статистику? Всем заранее спасибо.
© php.net PHP: <?php if ($_SERVER["HTTP_X_FORWARDED_FOR"]) { if ($_SERVER["HTTP_CLIENT_IP"]) { $proxy = $_SERVER["HTTP_CLIENT_IP"]; } else { $proxy = $_SERVER["REMOTE_ADDR"]; } $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; } else { if ($_SERVER["HTTP_CLIENT_IP"]) { $ip = $_SERVER["HTTP_CLIENT_IP"]; } else { $ip = $_SERVER["REMOTE_ADDR"]; } } echo "Your IP $ip<BR>\n"; if (isset($proxy)) { echo "Your proxy IP is $proxy<BR>\n"; } ?>
Анто}{a Возможно, админ сервера ставил прокси и где-то накосячил. Изучи содержимое массива $_SERVER, если там не окажется реального IP адреса - ничего ты не сделаешь, это кривые руки хостера.
Такое может быть, если стоит проксирующий сервер поверх апача — попробуй поискать IP в $_SERVER['X_REMOTE_ADDR'], $_SERVER['X_FORWARDED_FOR'] или подобных...
Всем спасибо! Скрипт Luge не успел попробовать, сделал $ip=getenv(HTTP_X_FORWARDED_FOR); вроде все работает=)
мне вот теперь тока интересно - выдают они одно и тоже. Всегда ли getenv(HTTP_X_FORWARDED_FOR); будет правильным или лучше все-таки скрипт Luge использовать?
Еще один вопрос можно? Можно ли как-то, узнав ip, сделать скажем средствами php или чего другого трассировку? чтоб не самому tracert вводить в cmd и смотреть а запрограммить и он автоматом делал?