F.A.Q. - Najczęściej Zadawane Pytania - [Problem] Gadu-Gadu na forum - POPRAWKA DO WERSJI 1.12.6p2
joli - 01-02-2009, 23:53
Poprawke dodamy do paczki na dniach. Na razie, kto chce, moze skorzystac.
Dziekujemy
securian - 07-02-2009, 17:20
Ja tylko tak formalnie, kiedy paczka zostanie uaktualniona ?
tosiek - 08-02-2009, 16:39
Jakby ktoś chciał bramka z poprawkami w załączniku.
I mam pytanie czemu adres forum w wiadomości jest ocenzurowany ?
Radek - 09-02-2009, 14:06
Ze względu na filtry które kiedyś wprowadziło GG. Takie zabezpieczenie przed spamem.
They2 - 09-02-2009, 14:09
widze ze nadal nie pomoze, a myslalem.
Kod: | PROBLEM Z POLACZENIEM: 110 - Przekroczony czas oczekiwania na połączenie |
pewnie jakas funkcja na swoim serwerze jest wylaczona czy zablokowana?
jesli tak to jaka funkcja?
Radek - 09-02-2009, 14:13
They2,
includes/functions_gg.php
Kod: | function login($numer, $haslo, $host, $port, $opis = "", $wersja = 0x22)
{
$this->fp = @fsockopen($host, $port, $errno, $errstr, 10); |
Usuń małpę sprzed fsockopen. Powinno wywalić jakiś błąd, pewnie IP serwera gg jest złe.
Żeby ta bramka działała cały czas, należy jeszcze poprawić funkcję znajdz_serwer() w klasie GaduGadu.
They2 - 09-02-2009, 14:49
owszem wywala blad
Kod: | Warning: fsockopen() [function.fsockopen]: unable to connect to 217.17.41.88:8074 (Przekroczony czas oczekiwania na połączenie) in /home/alldeaf/public_html/forum/includes/functions_gg.php on line 126
|
[ Dodano: 09-02-2009, 14:52 ]
skoro to IP, mozna sprawdzic ktore IP GG sa online:
http://www.kadu.net/monitor/
[ Dodano: 09-02-2009, 14:58 ]
niestety sprobowalem zmienic IP i nie wyszlo, nadal ten sam blad funkcji fsockopen z IP jak wyzej i tez "problem z polaczeniem..."
oto proba zmiany:
Kod: | $ip = array(85, 86, 88, 89);
$host = '217.17.41.'.$ip[rand(0,sizeof($ip)-1)]; |
zamienilem na
Kod: | $ip = array(4, 5, 6, 7);
$host = '91.197.13.'.$ip[rand(0,sizeof($ip)-1)]; |
Radek - 09-02-2009, 15:22
IP powinno być pobierane z serwera GG, a nie ustalane w skrypcie na sztywno.
Dlatego ja proponuję zamienić kod:
Kod: | function znajdz_serwer($numer)
{
$http_fp = @fsockopen('appmsg.gadu-gadu.pl', 80, $errno, $errstr, 3);
if ( !$http_fp )
{
$this->debug("Nie mozna polaczyć z serwerem Gadu-Gadu: $errno - $errstr");
}
else
{
$get = "GET /appsvc/appmsg.asp?fmnumber=<$numer> 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($http_fp, $get);
fgets($http_fp, 128); fgets($http_fp, 128); $tmp = fgets($http_fp, 128);
fclose($http_fp);
if ( preg_match("/\s([\d\.]{8,16})\:([\d]{1,5})\s/", $tmp, $addres) )
{
$host = $addres[1];
$port = $addres[2];
return array ($host, $port);
}
}
$ip = array(85, 86, 88, 89);
$host = '217.17.41.'.$ip[rand(0,sizeof($ip)-1)];
$port = 8074;
return array ($host, $port);
} |
Na taki:
Kod: | function znajdz_serwer($numer)
{
$http_fp = @fsockopen('appmsg.gadu-gadu.pl', 80, $errno, $errstr, 3);
if ( !$http_fp )
{
return array('91.197.13.81', '8074');
}
else
{
$headers = "GET /appsvc/appmsg4.asp?fmnumber={numer}&version=6,0,0,133&lastmsg=0 HTTP/1.0\r\nAccept-Language: pl\r\nUser-Agent: Mozilla/4.04 [en] (Win95; I ;Nav)\r\nPragma: no-cache\r\nHost: appmsg.gadu-gadu.pl\r\n\r\n";
fwrite($http_fp, $headers);
$data = fread($http_fp, 500);
fclose($http_fp);
$data = explode("\r\n", $data);
$serverInfo = explode(' ', $data[3]);
$serverInfo = explode(':', $serverInfo[2]);
return array($serverInfo[0],$serverInfo[1]);
}
} |
Teraz IP i port są pobierane z serwera GG. Jeżeli jednak wystąpi jakiś błąd, to użyte zostanie IP 91.197.13.81 i port 8074. Po tej poprawce + poprawki z poprzedniej strony bramka działa. Pozostaje tylko poprawić funkcję odbierz_dane() ( nie zwraca statusu wiadomości - wiadomość dochodzi ale zawsze forum wyświetla "Wiadomość nie została dostarczona, spróbuj jeszcze raz (odśwież strone)." ).
They2 - 09-02-2009, 16:07
RuseK, i wyszlo to samo problem z polaczeniem, wydaje mi sie ze to nie jedna funkcja lecz caly plik do zmiany... w function login() gdzie fsockopen tez wywala
Zostawiam w spokoju
Radek - 09-02-2009, 16:13
They, u mnie działa bez kłopotów. Tylko wykonaj jeszcze poprawkę z posta Krzysia Kaspruka.
They2 - 09-02-2009, 16:19
wykonalem to wczesniej i napisalem o tym wyzej.
skoro u ciebie dziala to moze i mam wylaczona funkcje na serwerze albo nie wiem.
a moze przez to fsockopen nie moze, mam wlaczona cURL.
Radek - 09-02-2009, 16:26
They2, a usuń małpę sprzed wszystkich fsockopen i powiedz co wywala. Gdyby ta funkcja byla wylaczona to blad bylby inny, ale u Ciebie powinno byc ok.
Ostatnio w ogole myslalem o napisaniu od nowa tej klasy gg. Jak znajde czas to moze cos napisze.
They2 - 09-02-2009, 16:53
RuseK, to 2 funkcje z fsockopenem znajdz_serwer() i login()
wynik bledu jest ten sam jak wyzej lecz inny IP ktore podales wyzej
Kod: | Warning: fsockopen() [function.fsockopen]: unable to connect to 91.197.13.78:8074 (Przekroczony czas oczekiwania na połączenie) in /home/alldeaf/public_html/forum/includes/functions_gg.php on line 154 | ten blad w linii 154 nalezal do funkcji login() czyli to:
Kod: | function login($numer, $haslo, $host, $port, $opis = "", $wersja = 0x21)
{
$this->fp = fsockopen($host, $port, $errno, $errstr, 10); |
tylko jeden blad, a drugi w funkcji znajdz_serwer() nie pokazal.
Zico - 27-03-2009, 20:27
Po zainstalowaniu poprawionych plików z paczki bramka wprawdzie działa i wiadomości są dostarczane, ale pokazuje się następujący błąd:
Kod: | Warning: unpack() [function.unpack]: Type V: not enough input, need 4, have 0 in /.../.../.../.../includes/functions_gg.php on line 194 |
Co to znaczy i w jaki sposób można to naprawić?
lui754 - 27-03-2009, 20:32
Jest sporo postów na temat Twojego błędów:
http://www.przemo.org/php...function.unpack
http://www.przemo.org/php...function.unpack
http://www.przemo.org/php...function.unpack
http://www.przemo.org/php...function.unpack
+ przeczytaj ten temat są te błędy tutaj zamieszczone
|
|
|