Не могу понять зачем тут 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;
      }
}
 
ума не приложу зачем... видимо от большой занятости сделано так...


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.
 
nosferatum
ИМХО данный код вообще лишен всякого смысла.

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

P.S. А что храниться в $_SERVER['HTTP_CLIENT_IP'] ? Может там уже храниться перевернутый адрес? Одноко в таком случае не понятно почему сравниваются нулевые элементы, а не:
$referer[0] != $ip_expl[3]
 
Возможно потому, что у некоторых товарищей в HTTP_CLIENT_IP записывается что-то вроде 20.1.168.192.in-addr.arpa (это как-то связано с reverse lookup или обратным DNS-запросом)
 
Тогда всё понятно. Спасибо огромное. Буду иметь ввиду на будущее. Точно, если не совпадают первые элементы, то значит HTTP_CLIENT_IP записана именно конструкция такого вида, которую привёл alexcrown!
 
Сверху