в логах сервера сегодня увидел что сделано 6 посещений, и при этом вместо ip адреса надпись: unknown реверс днс тоже остутствует, но поле пустое, если его нет - должна соответственная надпись быть у других посещений ip определены как такое может быть ? как удалось скрыть цифры ?
какой функцией определяется ip? и да, посмотри в коде, при каком условии unknown. вероятнее всего, что либо подделан заголовок например для $_SERVER['HTTP_X_FORWARDED_FOR'] и заменен на unknown, либо же сама функция при каких-либо условиях возвращает unknown
у меня нет unknown варианта ответа в коде а вот этой функцией ip определяю: PHP: 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; } может быть из за хостера такое ?
Это магия с X-Forwarded-For заголовком, передают туда фигню типа 999.999.999.999, потому и пишет unknown. Что-то про сию тему тут: http://www.techstacks.com/howto/log-client-ip-and-xforwardedfor-ip-in-apache.html
PHP: elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; вот тут, если в заголовке X-Real-IP передать "unknown", то он у тебя и отобразится
Спасибо, теперь понятно стало. хочу эксперимент провести, можно ли с помощью curl или как там делается, произвести манипуляцию с подменой заголовка на свой ? если не сложно то покажите скрипт на php хочу всё это поднять на своём сервере и проверить в действии
А что у тебя за сайт расскажи, хочется увидеть это чудо, 2к вопросов по пхп как никак. Можно сказать всем ачатом писали.
такого быть не может. максимальное десятичное значение абсолютной восьмибитной единицы - 255, и это бродкаст пакеты, может у него в подсети завелся шалун который эксплоитит мак уровень бтв пробабли а вдруг это 127.0.0.1?
Еще как может. Поле типа String - хоть"VasyaPupkin" туда написать можно, http текстовый же протокол. Это в ip поле в четыре байта...
ТС уже разжевали, X-FORWARDED-FOR подменяют. Если надо узнать реальный айпи, выгружай логи Апача или какой у тебя там Nginx у хостера и выполняй поиск по этому юзерагенту и времени - отловишь айпи мерзавца.
это может быть из за ipv6? его php $_SERVER['REMOTE_ADDR'] не определяет да и вообще ipv6 нормально не оперделить разве что такими способами: PHP: <?php 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; } $ip_adres = getRealIpAddr(); if ( array_key_exists('addr', $_GET) ) $ip = $_GET['addr']; else $ip = $ip_adres; $v6 = preg_match("/^[0-9a-f]{1,4}:([0-9a-f]{0,4}:){1,6}[0-9a-f]{1,4}$/", $ip); $v4 = preg_match("/^([0-9]{1,3}\.){3}[0-9]{1,3}$/", $ip); if ( $v6 != 0 ) $type = "IPv6"; elseif ( $v4 != 0 ) $type = "IPv4"; else $type = "unknown"; echo json_encode(array("ip" => $ip, "type" => $type)); ?>
GAiN, попробуй сам. создай файлик 1.php и помести в него это: PHP: <?php 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 getRealIpAddr(); ?> затем через расширения для хрома (например это) отправь вот такие заголовки: Code: X-Forwarded-For: unknown и посмотри, что будет в результате.