Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Skrypty do generowania sygnaturek, na grafikach
Bakus
post
Post #1


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

Ostrzeżenie: (0%)
-----


Działanie skryptu można zobaczyć w mojej sygnaturce...
Pod adresem: signer.idn.net.pl można założyć sobie konto (trzeba podać nazwę użytkownika i hasło... nic więcej!) i przetestować funkcje zarządzania sygnaturkami.

Na forum można taki podpis umieścić wpisując:
Kod
[img]http://signer.idn.net.pl/static/uzytkownik.png[/img]


Skrypt (zarówno jak i strona) są w wersji RC1.
Proszę o uwagi - co byście dodali/zmienili, by uczynić z tego wersję ostateczną?

P.S. Sygnaturka z 4 linijkami ma ok. 1.4KB 3 linijki to ok. 1.2KB (istotne dla modemowców)


Edited: poprawiłem temat
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Bakus
post
Post #2


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

Ostrzeżenie: (0%)
-----


Udało mi się napisać sałość do wyciągania opisów... Nie wiem jeszcze, czy działa we wszystkich przypadkach, ale jak na razie nie pokazuje bzdur...
  1. <?php
  2. /* Skrypt napisany w oparciu o klasę www2gg (http://gg.wha.la/)
  3.  * i opis protokołu GaduGadu z projektu EKG (http://dev.null.pl/ekg/docs/protocol.html)
  4.  * Kod można dowolnie wykorzystać pod warunkiem pozostawienia niniejszego koment
  5. rza
  6.  * Kod jest udostępniony na zasadach OpenSource.
  7.  *
  8.  * @author: Krzysztof Andrzej Błachut vel Bakus <bakus@idn.net.pl>
  9.  * @copyright: 2004 by Krzysztof Andrzej Błachut vel Bakus
  10.  * @package: OpisGG
  11.  * @version: 0.9
  12.  */
  13.  
  14. // Login i hasło GG dla skryptu
  15. $numer_gg =;
  16. $haslo_gg = '';
  17. // Numer GG, którego opis chcemy wyświetlić
  18. $szukany_numer = 1247858;
  19.  
  20. /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  21.  
  22.  
  23. define(&#092;"GG_LOGIN60\", 0x0015);
  24. define(&#092;"GG_STATUS_AVAIL\",  0x0002);
  25. define(&#092;"GG_LOGIN_OK\",  0x0003);
  26. define(&#092;"GG_NOTIFY\",  0x0010);
  27. define(&#092;"GG_USER_NORMAL\", 0x0003);
  28.  
  29. function oblicz_hash ($haslo, $klucz)
  30. {
  31. $x0=0; $x1=0; $y0=0; $y1=0; $z=0; $tmp=0;
  32. $y0 = ($klucz << 16) >> 16; $y1 = $klucz >> 16 ;
  33. for ($i=0; $i<strlen($haslo); $i++)
  34. {
  35. $x0 = ($x0 & 0xFF00) | ord($haslo[$i]); $x1 &= 0xFFFF;
  36. $y0 ^= $x0; $y1 ^= $x1;
  37. $y0 += $x0; $y1 += $x1;
  38. $x1 <<= 8; $x1 |= ($x0 >> 8); $x0 <<= 8;
  39. $y0 ^= $x0; $y1 ^= $x1;
  40. $x1 <<= 8; $x1 |= ($x0 >> 8); $x0 <<= 8;
  41. $y0 -= $x0; $y1 -= $x1;
  42. $x1 <<= 8; $x1 |= ($x0 >> 8); $x0 <<= 8;
  43. $y0 ^= $x0; $y1 ^= $x1;
  44. $z = $y0 & 0x1F;
  45. $y0 &= 0xFFFF; $y1 &= 0xFFFF;
  46. if ($z <= 16)
  47. {
  48. $tmp= ($y1 << $z) | ($y0 >> (16-$z));
  49. $y0 = ($y1 >> (16-$z)) | ($y0 << $z);
  50. $y1 = $tmp;
  51. }else{
  52. $tmp= $y0 << ($z-16);
  53. $y0 = ($y0 >> (32-$z)) | ( (($y1 << $z) >> $z) << ($z-16) );
  54. $y1 = ($y1 >> (32-$z)) | $tmp;
  55. }
  56. $y0 &= 0xFFFF; $y1 &= 0xFFFF;
  57. }
  58. $hash = hexdec(sprintf(&#092;"%04x%04x\", $y1, $y0));
  59. settype($hash, 'integer');
  60. return $hash;
  61. }
  62.  
  63. /* Funkcja pobiera z serwera GaduGadu opis dla podanego numeru.
  64.  *
  65.  * @param int Numer GG \"bramki\"
  66.  * @param string Hasło GG \"bramki\"
  67.  * @param int Numer GG, którego opis funkcja ma pobrać
  68.  * @param var Zmienna w której umieszczony będzie ewentualny komunikat błęd
  69.  
  70.  * @return mixed Zawiera Opis numeru GG, lub false w przypadku błędu
  71.  */
  72. function get_gg_status($numer_gg, $haslo_gg, $szukany_numer, &$error)
  73. {
  74. // Ustawianie stałych na potrzeby protokołu
  75. define(&#092;"GG_LOGIN60\", 0x0015);
  76. define(&#092;"GG_STATUS_AVAIL\",  0x0002);
  77. define(&#092;"GG_LOGIN_OK\", 0x0003);
  78. define(&#092;"GG_NOTIFY\",  0x0010);
  79. define(&#092;"GG_USER_NORMAL\", 0x0003);
  80.  
  81. $fp = fsockopen( &#092;"appmsg.gadu-gadu.pl\", 80, $errno, $errmsg, 3 );
  82. if (!$fp)
  83. {
  84. $error = &#092;"BRAK POLACZENA Z APPMSG.GADU-GADU.PL, MOZE BYC PRZECIAZONY: \" . $errno . \" - \" . $errstr . \"n\";
  85. return false;
  86. }else{
  87. $get = &#092;"GET /appsvc/appmsg.asp?fmnumber=<$numer_gg> HTTP/1.0rn\";
  88. $get.= &#092;"Host: appmsg.gadu-gadu.plrn\";
  89. $get.= &#092;"User-Agent: Mozilla/4.7 [en] (Win98; I)rn\";
  90. $get.= &#092;"Pragma: no-cachernrn\";
  91. fputs($fp, $get);
  92. fgets($fp, 128);
  93. fgets($fp, 128); 
  94. $buf = fgets($fp, 128);
  95. preg_match(&#092;"/s([d.]{8,16}):([d]{1,5})s/\", $buf, $adres);
  96. $host = $adres[1];
  97. $port = $adres[2];
  98. fclose($fp);
  99. }
  100.  
  101. // Ustanawianie połączenia z serwerem GG
  102. $fp = fsockopen($host, $port, $errno, $errstr, 10);
  103. if (!$fp)
  104. {
  105. $error = &#092;"PROBLEM Z POLACZENIEM: $errno - $errstrnn\";
  106. return false;
  107. }
  108. if (!$data = fread($fp, 12))
  109. {
  110. $error = &#092;"Polaczenie nieoczekiwanie zamknietenn\";
  111. return false;
  112. }
  113.  
  114. // Pobieranie danych z serwera - odbiór klucza do wygenerowania hasha hasła
  115. $tab = unpack(&#092;"Vtyp/Vrozmiar/Vklucz\", $data);
  116. // obliczanie hasha hasła
  117. $hash = oblicz_hash($haslo_gg, $tab['klucz']);
  118. $data = pack(&#092;"VVVVVVvVvVvCCa\".strlen(\"\"), GG_LOGIN60, 0x20 + strlen(\"\"),
  119. $numer_gg, $hash, GG_STATUS_AVAIL, 0x20, 0, 0, 0, 0, 0, 0x14, 0xbe , &#092;"\");
  120. // wysłanie hasha hasła
  121. fwrite($fp, $data);
  122. if (!$data1 = fread($fp, 8))
  123. {
  124. $error = &#092;"Nie rozpoznany bladn\";
  125. return false;
  126. }
  127. $tab = unpack(&#092;"Vlogin_status/Vrozmiar\", $data1);
  128. if($tab['login_status'] != GG_LOGIN_OK)
  129. {
  130. $error = &#092;"Nie prawidłowe hasło...nn\";
  131. return false;
  132. }
  133.  
  134. // Wysłanie listy kontaktów z jednym numerem
  135. $data = pack (&#092;"VVVC\",GG_NOTIFY, 5, $szukany_numer, GG_USER_NORMAL);
  136. if(!fwrite($fp,$data))
  137. {
  138. $error = &#092;"Blad wysylania listy kontaktownn\";
  139. return false;
  140. }
  141. // Odebranie pakietu ze specyfikacją następnego pakietu
  142. $data = fread($fp, 8);
  143. $tab = unpack(&#092;"Vtyp/Vrozmiar\", $data);
  144. // Pobranie pakietu opisu
  145. $data = fread($fp, $tab['rozmiar']);
  146. // Zamknięcie połączenia z serwerem
  147. fclose($fp);
  148. // Przetworzenie znaków końca linii na spacje
  149. $status_kontaktu = str_replace(&#092;"n\", ' ', $data);
  150. // Wycięcie zbędnych znaków na początku opisu
  151. return substr($status_kontaktu, 16);
  152. }
  153. ?>


A funkcja "kolorująca"...
  1. <?php
  2. /* Generowanie koloru paska (jeżeli nie istnieje w tablicy kolorów) */
  3. if (empty($kolory[$this->__data[$i][&#092;"proc\"]]))
  4. {
  5. if ($this->__data[$i][&#092;"proc\"] < 50)
  6. {
  7. $kolory[$this->__data[$i][&#092;"proc\"]] = imagecolorallocate($img, 255, ($this->__data[$i][\"proc\"] * 5), 0);
  8. }elseif ($this->__data[$i][&#092;"proc\"] == 50){
  9. $kolory[$this->__data[$i][&#092;"proc\"]] = imagecolorallocate($img, 255, 255, 0);
  10. }else{
  11. $kolory[$this->__data[$i][&#092;"proc\"]] = imagecolorallocate($img, (250 - ($this->__data[$i][\"proc\"] * 5)), 255, 0);
  12. } 
  13. }
  14. ?>

Ta cała zabawa z tablicą kolorów jest potrzebna by przy posiadaniu większej ilości przejść w jednym kolorze nie duplikować tych samych kolorów w palecie obrazka (dzięki temu obrazek jest te parę bajtów mniejszy)...
(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie
- Bakus   Skrypty do generowania sygnaturek   16.09.2004, 03:15:18
- - .dragonfly   Skrypt stal sie inspiracja dla mojego, konkurencyj...   16.09.2004, 03:26:46
- - Bakus   co do zmiany ołożenia tekstów i pasków zastanawiał...   16.09.2004, 03:42:18
- - .dragonfly   Moj skrypt (envie.Status) znajduje sie narazie w f...   16.09.2004, 07:55:48
- - Bakus   nionio... muszę przyznać, że nieźle to wygąda... t...   16.09.2004, 13:39:36
- - matid   Cytat(Bakus @ 2004-09-16 14:39:36)Wybór kolor...   16.09.2004, 14:25:56
- - Bakus   Mój skrypt zmienił adres: http://signer.idn.net.pl...   16.09.2004, 14:47:01
- - MoD   Hyh... dlaczego po kliknięciu w link w ustawieniec...   18.09.2004, 12:09:00
- - Bakus   Cytat(MoD @ 2004-09-18 13:09:00)Hyh... dlacze...   18.09.2004, 12:50:31
- - MoD   Screen Pole "Postęp" zostawiłem puste. ...   18.09.2004, 13:01:26
- - Bakus   Wszystkie te błędy faktycznie występowały... zosta...   19.09.2004, 00:51:40
- - MoD   No to teraz tylko czekać Ja narazie zrobiłem sob...   19.09.2004, 11:23:10
- - Dabroz   A ja zrobiłem sobie skrypcik korzystający z czcion...   19.09.2004, 12:25:23
- - .dragonfly   A co ma IE do koloru przezroczystego? Kolor przezr...   19.09.2004, 14:08:55
- - Dabroz   kAzu^: standard PNG przewiduje możliwość wykorzyst...   19.09.2004, 17:51:23
- - .dragonfly   Czemu nie skorzystasz z funkcji: imagecolortranspa...   19.09.2004, 18:03:35
- - MoD   Bakus, ile będziemy czekać na skrypt Niecierpliwi...   19.09.2004, 18:06:24
- - Dabroz   Użyłem tej funkcji, ale nic ona nie robi... prawdo...   19.09.2004, 18:07:27
- - MoD   Cytat(kAzu^ @ 2004-09-19 19:03:35)// Dla zain...   19.09.2004, 18:14:28
- - Bakus   MoD: już niedługo... nie ma się co obawiać... (P.S...   19.09.2004, 18:18:46
- - MoD   Cytat(Bakus @ 2004-09-19 19:18:46)MoD: już ni...   19.09.2004, 18:48:10
- - .dragonfly   Mamy juz to, tylko narazie w wersji dostepnej tylk...   19.09.2004, 21:15:29
- - Bakus   Jak na razie staramy się wydać z kAzu^ stabilną we...   20.09.2004, 04:05:11
- - scanner   serafin: a mógłbyś się nie chwalić, tylko ocenić p...   20.09.2004, 10:58:59
- - .dragonfly   Popisywanie sie i gadki typu "Czego to ja nie...   20.09.2004, 11:32:26
- - shpyo   noo, jestem po wrażeniem (wielkim) - naprawdę kawa...   20.09.2004, 19:29:33
- - Bakus   shpyo: dzięki za komplement... MoD: dostęp do kodu...   20.09.2004, 23:20:46
- - Vertical   Nieźle zrealizowany pomysł, tylko, że strona tytuł...   21.09.2004, 20:16:00
- - .dragonfly   Wciagu kilku najblizszych dni wszystko zostanie pr...   21.09.2004, 22:05:10
- - Ive   Super skrypcik i fajnie wykonany do tego :] Gratul...   23.09.2004, 15:24:32
- - Vertical   A co ma znaczyć to CytatWarning: mysql_connect():...   24.09.2004, 07:55:33
- - Bakus   Cytat(Vertical @ 2004-09-24 08:55:33)Kiedy pr...   24.09.2004, 08:36:26
- - Vertical   A to spoks   24.09.2004, 16:57:42
- - Dabroz   A tak w ogole to, Bakus gratuluje nie tyle skryptu...   24.09.2004, 17:51:13
- - Bakus   Cytat(Autor nieznany)Z lenistwa rodzą się dzieła, ...   26.09.2004, 18:05:14
- - Vertical   Tylko, że kiedy nie wypełniam pola "postęp...   27.09.2004, 20:23:04
- - Bakus   z tego co wiem, to jest lista rozwijana z wartości...   27.09.2004, 23:29:07
- - Vertical   Właśnie chodzi o to, że kiedy nawet nie zaznaczam ...   28.09.2004, 10:24:08
- - MoD   Mnie się progressbar już nie pokazuje, ale mam co ...   28.09.2004, 14:33:42
- - Bakus   Vertical: napisz w jaki sposób, co robisz, lub wyś...   28.09.2004, 15:19:31
- - MoD   Czy aktualna wersja IDNSigner jest oparta na bazie...   28.09.2004, 15:46:16
- - Bakus   Obecna wersja korzysta z MySQLa... to jest jak na ...   28.09.2004, 16:00:47
- - MoD   Ładnie wygląda ta nowa wersja Z pewnością jeszcze...   29.09.2004, 08:42:41
- - revyag   Świetna sprawa. Założyłem sobie konto, ale w sumie...   29.09.2004, 09:12:26
- - MoD   -> Wylogowanie Screena nie mogę dać bo www.tri...   29.09.2004, 09:22:18
- - Bakus   MoD: Z jakiej ptrzeglądarki korzystasz? Czy po kli...   29.09.2004, 13:28:58
- - MoD   Cytat(Bakus @ 2004-09-29 14:28:58)MoD: Z jaki...   29.09.2004, 14:58:52
- - .dragonfly   Color picker dodam dzisiaj/jutro.   29.09.2004, 15:37:43
- - Vertical   CytatVertical: napisz w jaki sposób, co robisz, lu...   29.09.2004, 18:57:28
- - MoD   Cytat(Vertical @ 2004-09-29 19:57:28)Cytat Ve...   29.09.2004, 19:00:31
- - Vertical   CytatDla np. Angilka to nie jest mały szczegół Al...   29.09.2004, 19:16:03
- - Bakus   Jak by nie było jest poprawione... Może ktoś z Wa...   29.09.2004, 21:35:27
- - kicaj   ...przyznam sie ze nie czytalem w/w opini i ocen ...   29.09.2004, 22:36:27
- - bela_666   @kicaj_: do czego byś zastosował ten skrypt?   29.09.2004, 23:33:34
- - Bakus   @kicaj_: Skrypt jest przeznaczony (o czym pisałem)...   29.09.2004, 23:37:39
- - rogrog   Cytat(Vertical @ 2004-09-29 19:57:28)Powinno ...   30.09.2004, 17:19:57
- - Vertical   Cytatlepiej się nie wymądrzaj jak nie wiesz, bo si...   30.09.2004, 17:34:38
- - party   Może by dodać pogrubienie tekstu?   30.09.2004, 19:20:50
- - Bakus   party: jak narazie pogrubiebie nie wchodzi w rachu...   30.09.2004, 20:44:18
- - party   Wyciągnięcie statusu (dostępny, z/w, niedostępny) ...   1.10.2004, 13:52:01
- - .dragonfly   @party: nie, byl to prawdopodobnie problem z serwe...   1.10.2004, 14:17:10
- - Vertical   @party: Mi by się przy okazji też przydał taki skr...   1.10.2004, 16:24:58
- - rogrog   Cytat(Vertical @ 2004-09-30 18:34:38)nie wiem...   1.10.2004, 16:30:08
- - Bakus   @party: chodzi o opis... ( http://gg.siedziba.pl/u...   1.10.2004, 22:47:38
- - FiDO   Opis z gg wyciąga się równie prosto co status. ht...   1.10.2004, 23:59:41
- - Bakus   Udało mi się napisać sałość do wyciągania opisów.....   2.10.2004, 01:02:15
- - FiDO   Ten sposob wyciagania opisu tez niewiele daje, bo ...   2.10.2004, 11:18:30
- - Bakus   Wybrałem tą drugą wersję A co do gradientów - ja...   2.10.2004, 16:45:11
- - party   Cytat(Bakus @ 2004-10-01 23:47:38)@party: cho...   2.10.2004, 22:42:55
- - Vengeance   bardzo fajny pomysl z tym projektem ;]   3.10.2004, 13:13:29
- - Bakus   dzięki napisanej przezemnie funkcji do pobierania ...   7.10.2004, 00:15:18
- - party   U mnie jest pusta linijka zamiast statusu...   7.10.2004, 10:31:32
- - MoD   Cytat(party @ 2004-10-07 11:31:32)U mnie jest...   7.10.2004, 12:26:01
- - Ive   ta.. super skrypcik ale opis gg musisz naprawic [...   7.10.2004, 13:55:34
- - Bakus   Ive: cenna uwaga z tym kwadratem... Trafiło do man...   8.10.2004, 00:06:56
- - shpyo   błąd: może to mały i nieznaczący błąd jednak myślę...   16.10.2004, 07:54:03
- - Fipaj   Mam problem: ponieważ nie za bardzo mi linux ostat...   23.02.2005, 15:57:59
- - Vertical   tary obsługuje WinACE [download]   23.02.2005, 16:27:51
- - Fipaj   Wielkie dzięki... już pobrałem   23.02.2005, 16:38:06
- - Bakus   Zapraszam na oficjalną stronę download skryptu IDN...   24.02.2005, 03:36:26
- - Fipaj   Odczytałem ten plik IDNSignerem... i jednym słowem...   24.02.2005, 09:44:31
- - Bakus   Kod został uproszczony z wersji jaka była na począ...   25.02.2005, 00:39:50
- - _Mateo   Panowie, odwaliliscie kawał dobrej roboty! swi...   5.03.2005, 22:38:14
- - Kreton   Cytatpodałeś jak od czarnego (0%) przejść do białe...   7.08.2006, 07:54:46
- - Turgon   A nie prościej Kreton wziąść Photoshopa lub Gimpka...   7.08.2006, 07:57:59
- - Kreton   Chciałem dopisać tylko, że uży...   7.08.2006, 08:10:44
- - Turgon   Bo ja zrozumiałem, że tło ma być gradientowe... Ob...   7.08.2006, 08:27:07
- - BDCC   1. Serwer na którym jest skrypt nie działa. 2. Dal...   9.08.2007, 22:05:32


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.11.2025 - 12:56