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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрипт не может определить IP 
:(
    Опции темы
ReactOS
  Дата 10.12.2007, 04:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Привет! =)

Вас беспокою по следующему поводу:

Создал скрипт для определения IP.
IP отловить не может, но кажется я догадываюсь почему! =)
Мне просто интересно прав ли я или нет!


Скрипт: "catch_ip.php"
Код

<?php

//Определяем IP
$ip = $_SERVER["REMOTE_ADDR"];

//Опрделяем Подсеть
$subnet = getenv(HTTP_X_FORWARD_FOR);

//Формируем строку с полным IP
if(($subnet != null) && ($subnet != $_SERVER["REMOTE_ADDR"]))
    $_SERVER["REMOTE ADDR"] = $_SERVER["REMOTE ADDR"]."/".$subnet;
echo("Страницу $_SERVER[PHP_SELF] посетил пользователь с IP:").$_SERVER["REMOTE ADDR"];

?>


Я цепляюсь за заголовок HTTP_X_FORWARD_FOR, но я юзаю хорошую прокси, которая не оставляет за собой заголовки, поэтому скрипт, если правильно сказать не "не работает", а просто не может определить IP.

Вопросы:

Как же взять IP?

Ведь на сайте http://seemyip.com , любой ИП берется!
Как мне брать хотя бы ИП прокси?


PS:

Скрипт, запрещающий доступ определенному IP, тоже не работает! =)
Наверное, по этой же причине! =)


НО:

Знаю, что в .htaccess можно прописать:

Код

Deny ip.ip.ip.ip


Он же тоже не может отлавливать заголовки? =)
А то сейчас возможности проверить - нет, подскажите насчет .htaccess тоже! Вроде чудес не бывает! =)

Это сообщение отредактировал(а) ReactOS - 10.12.2007, 04:29
PM   Вверх
Leoo
Дата 10.12.2007, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 270
Регистрация: 3.10.2005
Где: г. Обнинск

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



а функцию getIp не пробоваль юзать?


--------------------
Если вы не страдаете паранойей, это не значит, что они за вами не летят!
PM MAIL WWW ICQ   Вверх
kasmanaft
Дата 10.12.2007, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Leoo, штой-то за функция такая?

ReactOS, используйте HTTP_X_FORWARDED_FOR
PM MAIL   Вверх
Leoo
Дата 10.12.2007, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 270
Регистрация: 3.10.2005
Где: г. Обнинск

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



Прошу прощения, я немного ошибся  smile 


--------------------
Если вы не страдаете паранойей, это не значит, что они за вами не летят!
PM MAIL WWW ICQ   Вверх
SelenIT
Дата 10.12.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Только HTTP_X_FORWARDED_FOR - далеко не единственное место, где могут скрываться (а могут и не скрываться) айпишники (см. напр. эту тему). Если, как говорится, "очень надо" и совсем делать нечего, можно тупо перешерстить $_SERVER и $_ENV на предмет чего-либо хоть приблизительно айпиподобного smile. Правда, какой со всего этого практический толк?..


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
vasac
Дата 10.12.2007, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

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



getenv(HTTP_X_FORWARD_FOR)
не забывайте строки заключать в кавычки.
Цитата

Как мне брать хотя бы ИП прокси?

Тот же REMOTE_ADDR
PM WWW   Вверх
GZep
Дата 10.12.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


участник Винграда
***


Профиль
Группа: Завсегдатай
Сообщений: 1528
Регистрация: 7.7.2006
Где: Москва

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



аа.. г-н SelenIT уже дал ссылку на функцию, которая потрошит все заголовки подрят и выплевывает нечто, похожее на ip)))


--------------------
user posted imageuser posted image
PM MAIL WWW ICQ Skype GTalk   Вверх
Feldmarschall
Дата 11.12.2007, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



Мне кажется, сам подход у автора не совсем правильный.
Во-первых, IP-адрес - это 4 байта, а не строка вида xxx.xxx.xxx.xxx/xxx.xxx.xxx.xxx
Во-вторых, HTTP_X_FORWARDED_FOR - это никакая не "подсеть", что бы ни имелось в виду под этим термином, а HTTP заголовок.

Ну, и небольшое замечание: в пхп отсутствует, насколько мне известно, константа HTTP_X_FORWARD_FOR. И никаких других констант с похожими именами - тоже. А строки в пхп пишутся в кавычках.
PM   Вверх
MoLeX
Дата 11.12.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

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



Feldmarschall ну и какой подход по твоему правильный?

З.Ы. ReactOS,  у тебя REMOTE_ADDR в некоторых местах написан без земли (т.е. REMOTE ADDR)

Это сообщение отредактировал(а) MoLeX - 11.12.2007, 11:14


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Astraller
Дата 11.12.2007, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 1.8.2007
Где: $Украина[Кры м]->Феодосия

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



vasac
Цитата
Тот же REMOTE_ADDR 

Нет, он не пробьёт прокс, юзать надо HTTP_X_FORWARDED_FOR или HTTP_REAL_IP
 
Feldmarschall, вполне они есть smile 


--------------------
A.S.T.R.A.L.L.E.R.: Artificial Synthetic Technician Responsible for Assassination, Logical Learning and Efficient Repair
PM MAIL WWW ICQ   Вверх
Feldmarschall
Дата 11.12.2007, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



Мда, извинюсь. Мне показалось это очевидным.
Скрипт: "catch_ip.php"
Код
echo("Страницу $_SERVER[PHP_SELF] посетил пользователь с IP:").$_SERVER["REMOTE_ADDR"];

Про остальное написал г-н SelenIT.
Разве что, я бы придрался к слоу "тупо", поскольку тупой перебор, как раз, испортит картину. Как минимум, надо отсекать приватные сети.

Это если рассматривать проблему определения IP адреса, а не неправильного написания имени переменной, в которой, похоже, и кроется разгадка. И, в любом случае, как он совершенно правильно заметил, перебор HTTP заголовков не имеет с определением IP адреса ничего общего.
Сам термин, кстати, "определение IP адреса", я уверен на 100%, толкуется участниками дискуссии по-разному. Мягко говоря.

ReactOS, тебе обязательно надо включить отображение ошибок. Полное отображение. 
Уже второй вопрос ты задаешь из-за того, что не видишь сообщений об ошибках.



Это сообщение отредактировал(а) Feldmarschall - 11.12.2007, 11:31
PM   Вверх
Feldmarschall
Дата 11.12.2007, 11:46 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



Astraller, ну, вот это как раз то, о чем я говорил. Средний программист на PHP слабо разбирается в сетевых технологиях.
Повторю ещё раз. HTTP_X_FORWARDED_FOR или HTTP_REAL_IP - это НТТР заголовки.
Учитывая, что в НТТР заголовке может быть написано "админ - дурак!", ты будешь продолжать настаивать на том, что надо использовать именно эти переменные?

Кстати, о переменных. Я, конено, не уверен, и проверять мне лень, но я ни разу в жизни не видел, чтобы где-то использовались константы типа HTTP_X_FORWARDED_FOR.
Судя по беглому знакомству с этим разделом форума, его посетители пренебрегают уровнем отображения ошибок E_ALL, отчего и происходят такие заблуждения и многочисленные ошибки.

Вопрос же "определения IP адреса" - скорее философский. Надо четко понимать - что ты хочешь определить. Иначе можно разочароваться.
PM   Вверх
Astraller
Дата 11.12.2007, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 300
Регистрация: 1.8.2007
Где: $Украина[Кры м]->Феодосия

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



Уважаемый Feldmarschall
Цитата

Учитывая, что в НТТР заголовке может быть написано "админ - дурак!", ты будешь продолжать настаивать на том, что надо использовать именно эти переменные?

Если есть выбор в 1 из 1kk случаев наткнуться на идиота который передаёт не верные значения header и отсеять его с помощью простого регулярного выажения и слепо доверять REMOTE_ADDR, я выберу первое!
Цитата

Кстати, о переменных. Я, конено, не уверен, и проверять мне лень, но я ни разу в жизни не видел, чтобы где-то использовались константы типа HTTP_X_FORWARDED_FOR.

Это говорит лишь о скудности вашего опыта и подтверждает лень. Не более более, ни менее.
Цитата

Вопрос же "определения IP адреса" - скорее философский. Надо четко понимать - что ты хочешь определить. Иначе можно разочароваться.

"Что" ты хочешь определить ясно всем и каждому, вопрос "зачем" тебе его IP как раз и различает уровни. smile 


--------------------
A.S.T.R.A.L.L.E.R.: Artificial Synthetic Technician Responsible for Assassination, Logical Learning and Efficient Repair
PM MAIL WWW ICQ   Вверх
Feldmarschall
Дата 11.12.2007, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


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

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



Люблю самоуверенных. Особенно после того, как старательно и корректно указал им на ошибки. 
Окей.
Цитата(Astraller @  11.12.2007,  14:14 Найти цитируемый пост)
Если есть выбор в 1 из 1kk случаев наткнуться на идиота который передаёт не верные значения header и отсеять его с помощью простого регулярного выажения и слепо доверять REMOTE_ADDR, я выберу первое!

Это зависит от задачи. придумать задачу, при которой следует использовать неизвестно что вместо адреса хоста, соединившегося с нашим сервером я не могу. Ключевое слово - "вместо". Наряду - пожалуйста. Но заменять REMOTE_ADDR на 20HTTP_X_FORWARDED_FOR - это какое-то немыслимое головотяпство.
Цитата(Astraller @  11.12.2007,  14:14 Найти цитируемый пост)
Это говорит лишь о скудности вашего опыта и подтверждает лень. Не более более, ни менее.

я сделал такой запрос:
http://code.google.com/#q=%22echo%20HTTP_X_FORWARDED_FOR%22
он вернул 0 результатов. Видимо, я не одинок в своем отсутствии опыта и ленности.
Цитата(Astraller @  11.12.2007,  14:14 Найти цитируемый пост)
"Что" ты хочешь определить ясно всем и каждому

Возьмём распространенный пример - ведение логов.
Какой именно IP адрес (какого именно хоста) ты хочешь записать в лог?
PM   Вверх
vasac
Дата 11.12.2007, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

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



Feldmarschall, HTTP_X_FORWARDED_FOR встречается повсеместно, плохо искали. И везде совершенно четко говорится — единственное в чем можно быть б/м уверенным, это REMOTE_ADDR — IP пользователя или последнего прокси в цепи. Всё остальное заголовки, которые можно использовать для статистики и т.п, но не для построения на их основе какой-то системы безопастности.

Цитата(Astraller @  11.12.2007,  11:20 Найти цитируемый пост)
vasac, 
Цитата
Тот же REMOTE_ADDR 

Нет, он не пробьёт прокс, юзать надо HTTP_X_FORWARDED_FOR или HTTP_REAL_IP

Не понял
PM WWW   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0948 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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