Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определение IP, интересует механизм и реальность темы 
:(
    Опции темы
mike_prog
  Дата 17.5.2005, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 27.9.2003

Репутация: 1
Всего: 1



Или я поиск юзал неправильно или действительно нет такой темы(как такое может быть :-))).
Вобщем, прошу модерам не винить.
Меня интересует механизм определения IP адреса. Я использую такой код:
Код

$ip = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] !=
'undefined') $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

Но мне хотелось бы знать, насколько реален такой путь. Насколько я понимаю, если определена HTTP_X_FORWARDED_FOR в нее записывается динамический аддрес компа,
а в REMOTE_ADDR - адрес прокси сервера. Если нет, то в REMOTE_ADDR пишется реальный адрес. Хотя у меня почему-то в эту переменную попадет локальный адрес машины в
сети(10.0.0.4).
Еще мне сказали, что в HTTP_X_FORWARDED_FOR пишется несколько адресов иногда(когда несколько прокси), отсюда получается, что мой код не правильный, так?
И еще: если у провайдера куча диалапщиков и каждому выдается при дозвоне свой динамический ИП адрес, то не может быть такого, что я запомню адрес одного диалапщика,
а окажется, что в данный момент такой ИП уже у другого?
Эти вопросы меня сильно интересуют.

Это сообщение отредактировал(а) mike_prog - 17.5.2005, 18:04
PM MAIL ICQ   Вверх
Mal Hack
Дата 17.5.2005, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Код
<?php

function get_ip()
  {
   if ($ip = getenv("HTTP_CLIENT_IP"))
    {  return $ip;  }

   if ($ip = getenv("HTTP_X_FORWARDED_FOR"))
    {
     if ($ip == '' || $ip == "unknown")
      {  $ip = getenv("REMOTE_ADDR");  }

     return $ip;
    }
   if ( $ip = getenv("REMOTE_ADDR") )
    {  return $ip;  }
  }

?>

PM ICQ   Вверх
webevt
Дата 18.5.2005, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 5.5.2005

Репутация: нет
Всего: 3



За функцию спасибо. А что пишется в HTTP_CLIENT_IP?
...Все равно у меня ИПшник определяется мой сетевой локальный(10.0.0.4)...
А как насчет HTTP_X_FORWARDED_FOR: там один адрес или может быть несколько?


Это сообщение отредактировал(а) webevt - 18.5.2005, 15:05
PM MAIL   Вверх
Mal Hack
Дата 18.5.2005, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(webevt @ 18.5.2005, 15:56)
А как насчет HTTP_X_FORWARDED_FOR: там один адрес или может быть несколько?

Вроде как может быть несколько, но я с таким не встречался.

Цитата(webevt @ 18.5.2005, 15:56)
...Все равно у меня ИПшник определяется мой сетевой локальный(10.0.0.4)...

Видать где-то Прокси глушит... Такое иногда бывает. Причин объяснить не смогу не очень хорошо сетями владею.

Цитата(webevt @ 18.5.2005, 15:56)
За функцию спасибо. А что пишется в HTTP_CLIENT_IP?

Это вроде IP который определяется по HTTP заголовку. Если мне не изменяет память, то отличие от REMOTE_ADDRв том, что HTTP_* определяется на более низком сетевом уровне...

Но могу ошибаться.
PM ICQ   Вверх
mike_prog
Дата 19.5.2005, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 27.9.2003

Репутация: 1
Всего: 1



Цитата(Mal @ 18.5.2005, 15:02)
Видать где-то Прокси глушит... Такое иногда бывает.

Ни фига он не глушит, у меня прокси в принципе не используется, потому что через него АСька
не работает. Заходили также с клуба - та же проблема: определяется сетевой адрес(что-то типа 192.168...). Так может же такое быть, что такой именно сетевой адрес есть у машины в другом клубе? Как тогда определять IP?
Как вообще можно с более или менее пристойной вероятностью определить что именно с этой машины в инете, а ни с какой другой заходили на сайт? Я так понимаю нужно использовать куки, но от них пользы мало - всегда можно отключить и ходи незамеченным по сайту.

Это сообщение отредактировал(а) mike_prog - 19.5.2005, 14:17
PM MAIL ICQ   Вверх
Mal Hack
Дата 19.5.2005, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



mike_prog пойми, машина в нет послать 192.168 или еще ярд других IP не может. Ей ответ не придет же...
У меня на прошой работе такая же фигня была...IP правильно с моей сети на одном форуме не определялся. на пути к форуму была только родная прокся...
PM ICQ   Вверх
mike_prog
Дата 19.5.2005, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 27.9.2003

Репутация: 1
Всего: 1



Вот сайт - он определяет ИП правильно, откуда же он берет этот ИП? В то же время твоя Mal Hack функция определяет сетевой адрес машины.

Это сообщение отредактировал(а) mike_prog - 19.5.2005, 16:06
PM MAIL ICQ   Вверх
Mal Hack
Дата 19.5.2005, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



mike_prog, а если посмотреть на каком учловии она срабатывает? Тобишь какой IP ретурнится...
PM ICQ   Вверх
mike_prog
Дата 19.5.2005, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 27.9.2003

Репутация: 1
Всего: 1



IP, который в REMOTE_ADDR. У меня две другие переменные не определены. Я phpinfo() запускал - все также, записан сетевой адрес.
PM MAIL ICQ   Вверх
Alone
Дата 19.5.2005, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 1
Всего: 6



Все намного проще...
REMOTE_ADDR - IP адрес клиента
HTTP_VIA - если не пустая, значит используется proxy. Значение - адрес (или несколько адресов) proxy сервера.
HTTP_X_FORWARDED_FOR - если не пустая, значит используется proxy. Значение - реальный IP адрес клиента (Ваш IP).


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
mike_prog
Дата 19.5.2005, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 27.9.2003

Репутация: 1
Всего: 1



Нашел код:
Код

$detectip = getenv ("REMOTE_ADDR");
$realip = getenv ("HTTP_X_FORWARDED_FOR");
$proxy_ver = getenv ("HTTP_VIA");
if ($realip != "") {
echo "Detect IP $detectip<br>";
echo "Detect Real IP $realip<br>";
echo "Proxy $proxy_ver<br>";
} else {
echo "Detect IP $detectip<br>";
}
- все равно выдает то же самое smile

Это сообщение отредактировал(а) mike_prog - 19.5.2005, 15:12
PM MAIL ICQ   Вверх
Opik
Дата 19.5.2005, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



mike_prog
Ты случаем не на локальной машине тестируешь?
PM MAIL Skype   Вверх
mike_prog
Дата 19.5.2005, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 27.9.2003

Репутация: 1
Всего: 1



Да не дурак вроде. Я ж говорю: запускаю скрипт, выложенный на сервер, выдает локальный сетевой адрес, запускаю скрипт на сайте(смотри вверху) - выдает нормальный ИП
PM MAIL ICQ   Вверх
Mal Hack
Дата 19.5.2005, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



mike_prog сервер где находится? Часом не в локальной сети?
PM ICQ   Вверх
mike_prog
Дата 19.5.2005, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 27.9.2003

Репутация: 1
Всего: 1



Сервер в инете. В локальной сети он шлюз. Я в начале так и думал, что это из-за того, что сервер в сети. Но даже если в этом дело, из клуба заходили, определися адрес 192.168.8.6 - хотите сказать, что это не сетевой адрес?
А кем и как определяются переменные окружения? Может в них дело. smile

Это сообщение отредактировал(а) mike_prog - 19.5.2005, 17:09
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0977 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.