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%)
|
Funkcja łączy się z serwerem GG, loguje się na nim, pobiera opis dla podanego numeru i kończy połączenie. W przypadku powodzenia całości operacji funkcja zwraca opis. W przypadku niepowodzenia funkcja zwróci wartość "(bool) false" i w zmiennej podanej jako ostatni, czwaty argument umieści komunikat o błędzie jaki zaistniał.
Szczegóły parametrów do przekazania jak i wyniku działania funkcji znajdują się w jej komentarzu. Funkcja wymaga zdefiniowania stałych wartości używanych w protokole GaduGadu. Nie są one umieszczone w funkcji, by uniknąć komunikatu o błędzie ponownego deklarowania stałych w przypadku, gdy funkcja zostanie wywołana wielokrotnie w jednym skrypcie. Dwie uwagi końcowe: - ilość znaków jaka jest wycinana ze zwracanego opisu (ostatnia linijka funkcji) jest dobrana eksperymentalnie i jak narazie nie znalazłem innego lepszego) rozwiązania na pozbycie się znaków znajdujących się na początku zwracanego przez serwer wyniku. - Funkcja nie jest przystosowana do odbioru wielu statusów w jednym połączeniu. By ją do tego przystosować należy odpowiednio zmienić wywołanie funkcji (np. przekazać tablicę z numerami, a nie wartość INT i w linii 126 zmienić format pakietu zgodnie ze specyfikacją dostępną na stronie projektu EKG ( http://dev.null.pl/ekg/docs/protocol.html#ch1.11 ) (Kod wydzielony z tematu Skrypty do generowania sygnaturek, na grafikach)
UpDated (07.10.2004 01:07): Zmieniłem "return substr($status_kontaktu, 15);" na nieco bardziej zaawansowany i skuteczny sposób wycinania niechcianych znaków... Dzięki temu opisy nie są ucinane i nie zawierają śmieci... UpDated (08.02.2005 14:45): Coraz częściej dostaje PW o sposób użycia, więc... Sposób użycia - wyświetlenie opisu numeru 1234567 (nasz numer to 2358764, a haslo to: zxcdews):
UpDated (10.02.2005 04:31): Status wyświetlany jest bez żadnych krzaków - zmianie uległ sposób wyciągania opisu z pakietu odbieranego z serwera... UpDated (10.02.2005 05:16): Zoptymalizowałem wyciąganie opisu z pakietu do 1 polecenia unpack... |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 2.06.2008 Ostrzeżenie: (0%)
|
Witam,
troszkę zmodyfikowałem źródło na takie które działa, o to co wyszło: Kod <?php 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; } function get_gg_status($numer_gg, $haslo_gg, $szukany_numer, &$error) { define("GG_LOGIN60", 0x0015); define("GG_STATUS_AVAIL", 0x0002); define("GG_LOGIN_OK", 0x0003); define("GG_NOTIFY", 0x0010); define("GG_USER_NORMAL", 0x0003); $fp = fsockopen("91.197.13.24", 8074, $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; } $tab = unpack("Vtyp/Vrozmiar/Vklucz", $data); $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 , ""); 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; } $data = pack ("VVVC",GG_NOTIFY, 5, $szukany_numer, GG_USER_NORMAL); if(!fwrite($fp,$data)) { $error = "Blad wysylania listy kontaktow\n\n"; return false; } $data = fread($fp, 8); $tab = unpack("Vtyp/Vrozmiar", $data); $data = fread($fp, $tab['rozmiar']); fclose($fp); $tablica = @unpack("Iuin/Cstatus/Iremoteip/Sremoteport/Cversion/Cimagesize/Cunknown/Cdescription_size/a*", $data); return $tablica[1]; } function getOpis($numerBramki, $hasloBramki, $numerSpr){ $dostepny = '<img src="http://www.gadu-gadu.pl/users/status.asp?id='.$numerSpr.'&styl=3">'; if (get_gg_status($numerBramki, $hasloBramki, $numerSpr, $error) == '') { $getOpis = ''; } else { $getOpis = 'Z opisem: '.get_gg_status($numerBramki, $hasloBramki, $numerSpr, $error); } $opis = 'W tej chwili jestem: '.$dostepny.' <br /> '.$getOpis.'<br />'; return $opis; } ?> Sposób użycia: Kod echo getOpis('numer_bramki', 'haslo_bramki', 'nr_gg_do_sprawdzenia'); Źródło dostępne również pod adresem: http://chez.ovh.org/opis.phps |
|
|
|
Bakus Pobieranie opisu z GaduGadu 3.10.2004, 00:26:42
Tlenex Jeszcze zapytanie: czy da się wyciągnąć obrazek nu... 11.02.2005, 22:35:09
aleksander numer, który używa ta funkcja musi być wpisany do ... 12.02.2005, 00:14:11
Chewolf Cytat(aleksander @ 2005-02-12 00:14:11)1. Cze... 12.02.2005, 16:34:19
ikioloak Twoja funkcja to jest swietna sprawa ale ma jeden ... 6.05.2005, 01:30:17
Bakus HeHe... zarejestruj nowy numer GG
Jezeli serwer GG... 6.05.2005, 01:35:51
xantio Witam. Jestem tu nowy.
Chciałbym się dowiedzieć, c... 11.11.2005, 16:46:23
ikioloak http://gg.wha.la/ - tutaj masz dostepna klase do o... 11.11.2005, 18:04:40
artee Rozumiem, ze paczka do sprawdzania statusu jednej ... 13.11.2005, 00:21:49
Bakus Niestety nie znalazłem odpowiedzi na to pytanie. M... 15.11.2005, 02:46:50
dariusz_w wywala mi taki błąd z tego skryptu:
Warning: unpa... 16.11.2005, 09:45:11
ikioloak Tez mialem ten problem (moze w zwiazku z wejsciem ... 16.11.2005, 15:57:44
GrayHat troche odswieze temat.
skrypt obecnie nie dziala :... 12.03.2006, 23:41:29
bim2 Odswiezam i mowie ze dziala. teraz przetestowalem 24.04.2006, 17:29:58
elem84 Witam...
Wiem że jestem cienki ale nie moge porad... 19.06.2006, 18:39:56 
bim2 Cytat(elem84 @ 19.06.2006, 17:39 ) Witam.... 21.06.2006, 17:36:55
Balon [PHP] pobierz, plaintext <?php$numery = array... 21.06.2006, 17:31:07
Bakus Nie próbowałem rozwiązać pobierania wielu podpisów... 26.06.2006, 10:53:35
Athlan [PHP] pobierz, plaintext <?php$szukany_numer = ... 26.06.2006, 11:35:07
bim2 A co to da? $data jest nadpisywana więc wezmi... 29.06.2006, 15:53:06
Plikownik skrypt nie działa - pokazuje mi się taki błąd - ... 9.07.2006, 12:12:59
Athlan bim2 to może tak:
[PHP] pobierz, plaintext <?p... 12.07.2006, 08:24:35
bim2 No tak sie teraz da Tylko nie testowalem tego i n... 13.07.2006, 07:53:32
Athlan @bim2 teraz musi działać... dla każdego numeru two... 14.07.2006, 18:24:56
bim2 Ja rozumiem tlyko ja nie umiem wyciagac pisu i nie... 18.07.2006, 08:45:07
Athlan @bim2:
CytatFunkcja łączy się z se... 18.07.2006, 08:56:30
DooBLER Witam
Mam problem ze skryptem
Jeśli podany do skr... 13.09.2006, 19:55:00
bim2 Wiem że to głupie ale daj @ przed unpack (@unpack(... 14.09.2006, 18:48:55
DooBLER Cytat(bim2 @ 14.09.2006, 19:48:55 ) W... 15.09.2006, 19:21:17
bastek8989 mi wyswietla
Parse error: syntax error, unexpecte... 20.12.2006, 16:13:35
kossa co masz linię wyżej?
a to może:
[PHP] pobierz, ... 20.12.2006, 16:16:58
bastek8989 to nie to ^^ przeciez niewyswietla ze jest blad w ... 20.12.2006, 16:50:58
Sabistik Nie wiem czy zauważyliście ale kod z listingu z pi... 20.12.2006, 16:56:52
ali3n [PHP] pobierz, plaintext <?php/* Skrypt napisan... 24.12.2006, 05:35:29
sagittariuspl użyłem tego skryptu, ale nie działa. może jakieś s... 3.01.2007, 20:01:04
Raynold Żeby skrypt działał poprawnie, trze... 9.01.2007, 05:18:22
krl_b działało działało i przestało
Fatal error: Max... 12.03.2007, 00:25:03
suda Nigdy nie byłem dobry z wyrażeń ale preg z linii 8... 27.03.2007, 11:25:56
mathewoosh a jak mi pisze ze CytatNie rozpoznany blad wszyst... 12.04.2007, 08:02:10
soon Niestety poniższy kod nie zwraca mi żadnej wartośc... 18.07.2007, 17:16:33
mekeke2 jesli ni pokazuje ci opisu sprobuj recznie wklepac... 3.01.2008, 14:15:49
Trojan U mnie pomogło:
Cytat(suda @ 27.03.2007, 1... 17.01.2008, 00:18:28
anty mam problem z wyświetlaniem polskich znaków, każdy... 11.03.2008, 18:51:20
icetab a jak zrobic zeby pobrac pare opisow
bo jak tak zr... 24.05.2008, 21:26:41
dadexix Dobry, akurat czegoś takiego potrzebuje, ale wywal... 15.04.2009, 21:35:08
sebxx4 Witam Panowie,
Wybaczcie proszę offtopic, ale potr... 8.03.2020, 11:29:49
Bakus Jak mogłeś zauważyć ostatnia wiadomość w temacie m... 9.03.2020, 17:38:16 ![]() ![]() |
|
Aktualny czas: 9.12.2025 - 04:25 |