Не могу понять зачем тут array_reverse()?

nosferatum

Новичок
Не могу понять зачем тут array_reverse()?

Еть кусок кода, не могу понять зачем они там массив разворачивают задом на перёд! Ведь тогда, по идее он должен обратно собравться как 1.0.0.127 а не 127.0.0.1? Или я чего-то недопонимаю?

PHP:
$client_ip         = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : NULL;
$remote_addr  = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : NULL;

if (!empty ($client_ip) )
{
      $ip_expl = explode('.',$client_ip);
      $referer = explode('.',$remote_addr);

      if($referer[0] != $ip_expl[0])
      {
            $ip=array_reverse($ip_expl);
            $this->IpAddress = implode('.',$ip);
      }
      else
      {
            $this->IpAddress = $client_ip;
      }
}
 

Sender

Новичок
ума не приложу зачем... видимо от большой занятости сделано так...


ps.
The function ip2long() generates an IPv4 Internet network address from its Internet standard format (dotted string) representation. If ip_address is invalid then -1 is returned. Note that -1 does not evaluate as FALSE in PHP.
 

phprus

Moderator
Команда форума
nosferatum
ИМХО данный код вообще лишен всякого смысла.

Хотя переворачивание элементов адреса может иметь смысл. Например у нас есть база УРЛов и нам надо в быстро выбирать из нее сайты принадлежащие к каким-либо доменам. (заранее неизвестно каким). Тогда имеет смысл хранить домеры в адресе в перевернутом виде:
ru.phpclub.www/talk/showthread.php?s=&threadid=95790
И тогда запрос на выборку страниц с какого-либо домена будет простой LIKE по перевернутому домену. ( LIKE 'ru.' )

P.S. А что храниться в $_SERVER['HTTP_CLIENT_IP'] ? Может там уже храниться перевернутый адрес? Одноко в таком случае не понятно почему сравниваются нулевые элементы, а не:
$referer[0] != $ip_expl[3]
 

alexcrown

Новичок
Возможно потому, что у некоторых товарищей в HTTP_CLIENT_IP записывается что-то вроде 20.1.168.192.in-addr.arpa (это как-то связано с reverse lookup или обратным DNS-запросом)
 

nosferatum

Новичок
Тогда всё понятно. Спасибо огромное. Буду иметь ввиду на будущее. Точно, если не совпадают первые элементы, то значит HTTP_CLIENT_IP записана именно конструкция такого вида, которую привёл alexcrown!
 
Сверху