Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Почему ip пуст?
 
 автор: Shorr Kan   (25.03.2005 в 02:30)   письмо автору
 
 


if(@$_SERVER["HTTP_CLIENT_IP"]){$ip=$_SERVER["HTTP_CLIENT_IP"];}
elseif(@$_SERVER["HTTP_X_FORWARDED_FOR"]){$ip=$_SERVER["HTTP_X_FORWARDED_FOR"];}
else{$ip=@$_SERVER["REMOTE_ADDR"];}


Бывает, ip просто пуст. В базу записывается NULL. А у кое-кого вообще записалось
"unknown, 213.179". Почему?

   
 
 автор: cheops   (25.03.2005 в 09:27)   письмо автору
 
   для: Shorr Kan   (25.03.2005 в 02:30)
 

Люди скрывают свой IP-адрес, у кого параноя, кому это нужнго для злого умысла, кто для кича... но такое бывает.

   
 
 автор: Shorr Kan   (25.03.2005 в 18:02)   письмо автору
 
   для: cheops   (25.03.2005 в 09:27)
 

Да, но я еще могу понять пустое поле.... срезали все заголовки. А как быть с этим странным "unknow, первая_половина_айпи" ?

   
 
 автор: Shorr Kan   (25.03.2005 в 19:25)   письмо автору
 
   для: Shorr Kan   (25.03.2005 в 18:02)
 

О, скажите... А верным ли будет исправление:


if(@$_SERVER["HTTP_CLIENT_IP"]){$ip=$_SERVER["HTTP_CLIENT_IP"];} 
elseif(@$_SERVER["HTTP_X_FORWARDED_FOR"]){$ip=$_SERVER["HTTP_X_FORWARDED_FOR"];} 
else{$ip=@$_SERVER["REMOTE_ADDR"];}

if($ip==""){$ip=@$_SERVER["REMOTE_ADDR"];}


?

   
 
 автор: Shorr Kan   (25.03.2005 в 20:52)   письмо автору
 
   для: Shorr Kan   (25.03.2005 в 19:25)
 

Мне вот что сказали:


REMOTE_ADDR - это уникальный адрес для всего интернета, такого в сети больше нет, есть толькоодин адрес.
HTTP_X_FORWARDED_FOR - это внутресетвой адрес. Он может практически любым...
Определись. Если ты делаешь приложение для локальной сети, гдже все клиенты сидят за ОДНОЙ И ТОЙ ЖЕ ПРОКСЕЙ, тогда пользуй HTTP_X_FORWARDED_FOR.
Если ты делаешь внешнее приложение, тогда пользуй REMOTE_ADDR и забудь за HTTP_X_FORWARDED_FOR.
Если тебе нужно отслеживать внешню и внутреннюю посещаемость по адресам - пользуй ДВЕ перменные. Потому что:
а) что тебе даст внутренний IP неизвестной тебе сети, кроме набора цифр
б) HTTP_X_FORWARDED_FOR - есть необязательная перменная, есть прокси которые "режут" этот HTTP_X_FORWARDED_FOR.



Это верно? Я думал иначе... Может, где-то можно подробно почитать об этих трех заголовках? Распутайте, пожалуйста, то, во что я запутался...

   
 
 автор: Shorr Kan   (26.03.2005 в 04:56)   письмо автору
 
   для: Shorr Kan   (25.03.2005 в 20:52)
 


if(@$_SERVER["HTTP_CLIENT_IP"]){$ip=$_SERVER["HTTP_CLIENT_IP"];} 
elseif(@$_SERVER["HTTP_X_FORWARDED_FOR"]){$ip=$_SERVER["HTTP_X_FORWARDED_FOR"];} 
else{$ip=@$_SERVER["REMOTE_ADDR"];} 

if($ip==""){$ip=@$_SERVER["REMOTE_ADDR"];}



И еще... вот этот код будет повернее того, что я приводил в самом начале (отличие в наличии последней строки) ?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования