Přidat do svých webových stránek indikátor, zda je uživatel daného ICQ připojen, jistě není problém, a pokud nevíte jak, podívejte se přímo na stránky ICQ.com. Co dělat v případě, kdy se vám nabízené obrázky nelíbí, chcete jen textovou informaci nebo chcete v závislosti na stavu uživatele dynamicky generovat různý kód stránek (např. vložit do stránek formulář pro odeslání zprávy do ICQ pouze pokud jsem Online)?

Jednou z cest je analýza výstupu, který dává skript posílající obrázky do prohlížeče webové stránky. Adresa skriptu je http://web.icq.com/whitepages/online?icq=XXXXX&img=5. Uvedený skript zjistí stav uživatele a přesměruje v závislosti na stavu na patřičný obrázek, v tomto případě daný parametrem IMG. V našem případě je 5 zvoleno proto, že obrázek s tímto parametrem má nejmenší velikost v bytech. Ve skriptu se naváže spojení se serverem, pošle se požadavek na ztažení daného obrázku a poté se vyhodnotí odpověď serveru. Výsledkem je celkem jednoduchý skript, který s využitím regulárních výrazů spolehlivě rozliší stav Online a Offline. Voláte ho vždy s parametrem icq, např. icqcheck.php?icq=22635022, případně si ho pomocí include vložíte do vlastního skriptu.

<?PHP
$icqstat="Offline";  // text pro stav offline
$fp = fsockopen("web.icq.com", 80); // otevřít socket serveru na portu 80 (http)
if($fp) {  // otestovat, zda se podařilo spojit se serverem
  fputs($fp, "GET /whitepages/online?icq=$icq&img=5 HTTP/1.0\r\n\r\n"); // odeslat požadavek na ztažení souboru
  while ($line=FGetS($fp,128)) {
    if (ERegI("^Location:.*$", $line)) { // zjistit, zda v odpovědi serveru je část hlavičky pro přesměrování
      if (ERegI("4367",$line))  // pokud je v odpovědi 4367, jde o "zelenou květinku", uživatel je online
        $icqstat="Online";  // nastavit text pro stav online
      break;
    }
  }
}
echo $icqstat; // vypsat aktuální stav uživatele ICQ
?>

Funkce uvedeného skriptu je závislá na funkci skriptu serveru web.icq.com – pokud bude jeho funkce změněna, bude nutné skript a případně regulární výraz změnit také.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Žádný příspěvek v diskuzi

Odpovědět