Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > ICQ & PHP


Автор: The MASTER 30.6.2005, 22:33
Скажите пожалуйста, как проверить статус ICQ Pager и вывести результат своей картинкой а не той, что выдаёт сервер?

Автор: Mal Hack 30.6.2005, 22:52
Рыть спецификацию протокола ICQ и пытаться использовать его через cURL...
Но Это ИМХО, скорее всего не осуществимо.

На сколько я знаю, имена картинок со статусом у icq.com - разные. В принципе можно попробовать поиграться с сокетами.

Автор: The MASTER 30.6.2005, 23:00
Вот пример, но мне сказали что он по левому работает.

Код

function IcqStatus($icq){
 global $g_icq_list;
 if (isset($g_icq_list[$icq])) return $g_icq_list[$icq];
 $port = 80;
 $host = "status.icq.com";
 $path = "/online.gif?icq=".$icq;
 $timeout = 1;

 $response = "";
 $fp = fsockopen($host, $port, $errno, $errstr, $timeout);
 if($fp){
  fputs($fp, "GET $path HTTP/1.1\r\n");
  fputs($fp, "Host: $host\r\n");
  fputs($fp, "User-Agent: Internet Explorer 5.0/1.0\r\n");
  fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
  fputs($fp, "Connection: close\r\n\r\n");
  
  while(!feof($fp) && strpos($response, "Location:")=== false)
   $response = fgets($fp, 4096);
  fclose($fp);
 }
 $g_icq_list[$icq] = (strpos($response, "online1.gif")!== false);
 return $g_icq_list[$icq];
}

Автор: Mal Hack 30.6.2005, 23:03
Цитата(The @ 1.7.2005, 00:00)
Вот пример, но мне сказали что он по левому работает.

Ну ты проверь, поюзай.. Узнай причину почему не так работает.

Автор: The MASTER 30.6.2005, 23:14
Сделал такую штуку:

Код

<?
function IcqStatus($icq){    
 global $g_icq_list;    
 if (isset($g_icq_list[$icq])) return $g_icq_list[$icq];    
 $port = 80;    
 $host = "status.icq.com";    
 $path = "/online.gif?icq=".$icq;    
 $timeout = 10;    
 $response = "";    
 $fp = fsockopen($host, $port, $errno, $errstr, $timeout);    
 if($fp){    
  fputs($fp, "GET $path HTTP/1.1\r\n");    
  fputs($fp, "Host: $host\r\n");    
  fputs($fp, "User-Agent: Internet Explorer 5.0/1.0\r\n");    
  fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");    
  fputs($fp, "Connection: close\r\n\r\n");    
    
  while(!feof($fp) && strpos($response, "Location:")=== false)    
   $response = fgets($fp, 4096);    
  fclose($fp);    
 }    
 $g_icq_list[$icq] = (strpos($response, "online1.gif")!== false);    
 return $g_icq_list[$icq];    
}

echo "<form action='#' method='post'>
<input type=text name='icqn'>
<input type=submit>
</form>";

print ICQStatus($icqn);
?>


Если я icq онлайн, то параметр "1" если offline то вообще ничего.

Автор: The MASTER 30.6.2005, 23:33
$memeber_icq = номер аси;

запрос:

If ( ICQStatus($memeber_icq) == 1 )
print "<img src='online.gif'>";
else
print "<img src='offline.gif'>";

Всё, вопрос решён.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)