[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: что выполняется в данном примере
45king
Обьясните что здесь выполняеться поподробней а то я не все понимаю

$peers = array();
$numwant = empty($_GET['numwant']) ? 50 : intval($_GET['numwant']);
$query = @mysql_query("SELECT `ip`, `port`, `peer_id` FROM `$db_table` WHERE `info_hash` = '" . mysql_escape_string($_GET['info_hash']) . "' AND `expire_time` > NOW() ORDER BY RAND() LIMIT $numwant;") or errorexit('database select');
if (!empty($_REQUEST['compact'])) {
$peers = '';
while ($array = mysql_fetch_assoc($query)) {
$peers .= pack('Nn', $array['ip'], $array['port']);
}
}

else if (!empty($_REQUEST['no_peer_id'])) {
while ($array = mysql_fetch_assoc($query)) {
$peers[] = array('ip' => long2ip($array['ip']), 'port' => intval($array['port']));
}
}

else {
while ($array = mysql_fetch_assoc($query)) {
$peers[] = array('ip' => long2ip($array['ip']), 'port' => intval($array['port']), 'peer id' => $array['peer_id']);
}
}




Спустя 28 минут, 20 секунд (2.01.2012 - 11:01) Nikitian написал(а):
Из таблицы берётся данные по некоторому хэшу и собираются в различных форматах, исходя из входных параметров.

Спустя 3 минуты, 26 секунд (2.01.2012 - 11:05) 45king написал(а):
Nikitian
$_REQUEST['compact'] эт что означает?

Спустя 9 минут, 44 секунды (2.01.2012 - 11:15) Nikitian написал(а):
Это как раз один из входных параметров. Данные с именем compact могут содержаться в get, post-запросах или cookie.

Спустя 13 минут, 8 секунд (2.01.2012 - 11:28) 45king написал(а):
Nikitian
if (!empty($_REQUEST['compact'])) {
$peers = '';
while ($array = mysql_fetch_assoc($query)) {
$peers .= pack('Nn', $array['ip'], $array['port']);
}
}


а зачем $peers = ' ';

можно этот вариант так переписать

if(!issent($_REQUEST['compact'])){
while ($array = mysql_fetch_assoc($query)) {
$peers= pack('Nn', $array['ip'], $array['port']);
}
}

else if (!isset($_REQUEST['no_peer_id'])) {
while ($array = mysql_fetch_assoc($query)) {
$peers[] = array('ip' => long2ip($array['ip']), 'port' => intval($array['port']));
}
}

else {
while ($array = mysql_fetch_assoc($query)) {
$peers[] = array('ip' => long2ip($array['ip']), 'port' => intval($array['port']), 'peer id' => $array['peer_id']);
}
}

Спустя 2 минуты, 30 секунд (2.01.2012 - 11:30) GET написал(а):
45king

А вы разобрались, что делает pack и long2ip?

Расскажите мне тоже интересно.

Спустя 1 минута, 25 секунд (2.01.2012 - 11:32) Nikitian написал(а):
В случае генерации строки через pack() строка состоит из конкатенированных подстрок. Сперва она инициализируется $peers=''; а потом на каждой итерации добписывается. Инициализация сделана для того, чтобы не работать с массивом (первоначальное объявление переменной $peers) как со строкой.

Спустя 11 минут, 1 секунда (2.01.2012 - 11:43) 45king написал(а):
A.B.C.
long2ip переводит айп из такого вида 2147483647 в такой 82.145.210.174 я вроде так понял

Спустя 9 минут, 46 секунд (2.01.2012 - 11:52) 45king написал(а):
Nikitian
как переписать $peers .= pack('Nn', $array['ip'], $array['port']); под массив array

Спустя 10 минут, 41 секунда (2.01.2012 - 12:03) Nikitian написал(а):
Цитата (45king @ 2.01.2012 - 11:52)
Nikitian
как переписать $peers .= pack('Nn', $array['ip'], $array['port']); под массив array

Непонятно зачем вам нужен массив упакованных строк и какой формат массива требуется. В общем виде так:

$peers[]= pack('Nn', $array['ip'], $array['port']);

Ну и $peers=''; убрать
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.