ďťż

Skrypt opisów GG ...od czego zacząć

       

Podstrony


telcocafe

Witam

Chcię zrobić skrypt opisów GG. Pewnie powiecie że to głupi pomysł ale nie będzie to zwyczajny skrypt, będzie zawierał dodatkowe funkcje (sam na nie wpadłem). No i teraz mam pytanie, od czego zacząć go pisać. Znam w miarę dobrzę PHP i MySQL ale pojęcia nie mam od czego się zabrać.



Może od prostego skryptu który by dodawał numery gg i wyświetlał potem ich status (prawdziwy, nie jak nieraz różnie to widać) i np opis. Może też ile razy był ktoś aktywny w: czasie godziny, dniu, tygodzniu...
Użytkownik SZK edytował ten post 17 kwiecień 2006, 22:21

prostego

<?php /* Skrypt napisany w oparciu o klasę www2gg (http://gg.wha.la/) * i opis protokołu GaduGadu z projektu EKG (http://dev.null.pl/ekg/docs/protocol.html) * Kod można dowolnie wykorzystać pod warunkiem pozostawienia niniejszego komentarza * Kod jest udostępniony na zasadach OpenSource. * * @author: Krzysztof Andrzej Błachut vel Bakus <bakus@idn.net.pl> * @copyright: 2004 by Krzysztof Andrzej Błachut vel Bakus * @package: OpisGG * @version: 0.9 */   // Login i hasło GG dla skryptu   $numer_gg = 0000000; //jakis nieuzywany nr gg   $haslo_gg = 'haslo'; // haslo do niego   // Numer GG, którego opis chcemy wyświetlić   $szukany_numer = $_GET['nr']; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */   error_reporting(E_ALL);   define("GG_LOGIN60",      0x0015);   define("GG_STATUS_AVAIL",   0x0002);   define("GG_LOGIN_OK",      0x0003);   define("GG_NOTIFY",       0x0010);   define("GG_USER_NORMAL",   0x0003);   function oblicz_hash ($haslo, $klucz)   {      $x0=0; $x1=0; $y0=0; $y1=0; $z=0; $tmp=0;      $y0 = ($klucz << 16) >> 16; $y1 = $klucz >> 16;      for ($i=0; $i<strlen($haslo); $i++)      {         $x0 = ($x0 & 0xFF00) | ord($haslo[$i]); $x1 &= 0xFFFF;         $y0 ^= $x0; $y1 ^= $x1;         $y0 += $x0; $y1 += $x1;         $x1 <<= 8; $x1 |= ($x0 >> 8); $x0 <<= 8;         $y0 ^= $x0; $y1 ^= $x1;         $x1 <<= 8; $x1 |= ($x0 >> 8); $x0 <<= 8;         $y0 -= $x0; $y1 -= $x1;         $x1 <<= 8; $x1 |= ($x0 >> 8); $x0 <<= 8;         $y0 ^= $x0; $y1 ^= $x1;         $z = $y0 & 0x1F;         $y0 &= 0xFFFF; $y1 &= 0xFFFF;         if ($z <= 16)         {            $tmp= ($y1 << $z) | ($y0 >> (16-$z));            $y0 = ($y1 >> (16-$z)) | ($y0 << $z);            $y1 = $tmp;           }else{            $tmp= $y0 << ($z-16);            $y0 = ($y0 >> (32-$z)) | ( (($y1 << $z) >> $z) << ($z-16) );            $y1 = ($y1 >> (32-$z)) | $tmp;         }         $y0 &= 0xFFFF; $y1 &= 0xFFFF;      }      $hash = hexdec(sprintf("%04x%04x", $y1, $y0));      settype($hash, 'integer');      return $hash;   }   /* Funkcja pobiera z serwera GaduGadu opis dla podanego numeru.    *    * @param int Numer GG "bramki"    * @param string Hasło GG "bramki"    * @param int Numer GG, którego opis funkcja ma pobrać    * @param var Zmienna w której umieszczony będzie ewentualny komunikat błędu    * @return mixed Zawiera Opis numeru GG, lub false w przypadku błędu    */   function get_gg_status($numer_gg, $haslo_gg, $szukany_numer, &$error)   {      $fp = fsockopen( "appmsg.gadu-gadu.pl", 80, $errno, $errmsg, 3 );      if (!$fp)      {         $error = "BRAK POLACZENA Z APPMSG.GADU-GADU.PL, MOZE BYC PRZECIAZONY: " . $errno . " - " . $errstr . "\n";         return false;      }else{         $get = "GET /appsvc/appmsg.asp?fmnumber=<$numer_gg> HTTP/1.0\r\n";         $get.= "Host: appmsg.gadu-gadu.pl\r\n";         $get.= "User-Agent: Mozilla/4.7 [en] (Win98; I)\r\n";         $get.= "Pragma: no-cache\r\n\r\n";         fputs($fp, $get);         fgets($fp, 128);         fgets($fp, 128);         $buf = fgets($fp, 128);         preg_match("/\s([\d\.]{8,16})\:([\d] {1,5})\s/", $buf, $adres);         $host = $adres[1];         $port = $adres[2];         fclose($fp);      }      // Ustanawianie połączenia z serwerem GG      $fp = fsockopen($host, $port, $errno, $errstr, 10);      if (!$fp)      {         $error = "PROBLEM Z POLACZENIEM: $errno - $errstr\n\n";         return false;      }      if (!$data = fread($fp, 12))      {         $error = "Polaczenie nieoczekiwanie zamkniete\n\n";         return false;      }      // Pobieranie danych z serwera - odbiór klucza do wygenerowania hasha hasła      $tab = unpack("Vtyp/Vrozmiar/Vklucz", $data);      // obliczanie hasha hasła      $hash = oblicz_hash($haslo_gg, $tab['klucz']);      $data = pack("VVVVVVvVvVvCCa".strlen(""), GG_LOGIN60, 0x20 + strlen(""),      $numer_gg, $hash, GG_STATUS_AVAIL, 0x20, 0, 0, 0, 0, 0, 0x14, 0xbe , "");      // wysłanie hasha hasła      fwrite($fp, $data);      if (!$data1 = fread($fp, 8))      {         $error = "Nie rozpoznany blad\n";         return false;      }      $tab = unpack("Vlogin_status/Vrozmiar", $data1);      if($tab['login_status'] != GG_LOGIN_OK)      {         $error = "Nie prawidłowe hasło...\n\n";         return false;      }      // Wysłanie listy kontaktów z jednym numerem      $data = pack ("VVVC",GG_NOTIFY, 5, $szukany_numer, GG_USER_NORMAL);      if(!fwrite($fp,$data))      {         $error = "Blad wysylania listy kontaktow\n\n";         return false;      }      // Odebranie pakietu ze specyfikacją następnego pakietu      $data = fread($fp, 8);      $tab = unpack("Vtyp/Vrozmiar", $data);      // Pobranie pakietu opisu      $data = fread($fp, $tab['rozmiar']);      // Zamknięcie połączenia z serwerem      fclose($fp);      // Przetworzenie znaków końca linii na spacje      $status_kontaktu = str_replace("\n", ' ', $data);      // Wycięcie zbędnych znaków na początku opisu      return substr($status_kontaktu, 15);   }     echo get_gg_status($numer_gg,$haslo_gg,$szukany_numer, &$error);   ?>
Użytkownik bikstopa edytował ten post 17 kwiecień 2006, 23:33
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.