Jo sry, habe ich wohl alles etwas unklar beschrieben. Ich bemühe mich nochmal alles der Reihe nach zu schildern.
Ich habe als Ausgangspunkt eine Internetseite mit einem Formular. Man muß mit diesem Formular Daten Senden, um sich einzuloggen. Das Formular sieht so aus:
<table align="center" background="/pics/online.gif" width="790" cellpadding="9">
<tr><td>
<table>
<tr>
<td>
Name/Passwort:
</td>
<td valign="top">
<input type="text" name="NICK" size="11">
<input type="password" name="PW" maxlength="15" size="9">
<input type="submit" name="LOGIN" value="Login">
</td>
</tr>
</table>
</td></tr>
</table>
Ich schicke also meinen Request mit POST an die Seite:
POST /index2.php HTTP/1.1\r\n
Host: ...\r\n
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n
Accept-Encoding: gzip,deflate\r\n
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n
Keep-Alive: 300\r\n
Connection: keep-alive\r\n
Referer: http://.../index2.php\r\n
Content-Type: application/x-www-form-urlencoded\r\n
Content-Length: 36\r\n\r\n
NICK=christian&PW=30chk5&LOGIN=Login\r\n
\r\n
(ich verschicke das, indem ich die php-befehle "fsockopen" und "fwrite" benutze).
der server antwortet mir mit dem folgenden Response:
HTTP/1.1 302 Found\r\n
Date: Mon, 24 Nov 2008 21:09:01 GMT\r\n
Server: Apache/1.3.33 (Unix) (Gentoo/Linux) PHP/4.3.10 mod_gzip/1.3.26.1a\r\n
X-Powered-By: PHP/4.3.10\r\n
Set-Cookie: name=deleted; expires=Sun, 25-Nov-2007 21:09:00 GMT; path=/\r\n
Set-Cookie: sessionid=deleted; expires=Sun, 25-Nov-2007 21:09:00 GMT; path=/\r\n
Expires: Mon, 26 Jul 1997 05:00:00 GMT\r\n
Last-Modified: Mon, 24 Nov 2008 21:09:01 GMT\r\n
Cache-Control: post-check=0, pre-check=0\r\n
Pragma: no-cache\r\n
Set-Cookie: name=34485; expires=Mon, 24-Nov-2008 21:44:01 GMT; path=/\r\n
Set-Cookie: sessionid=a601b21fea9f31fdc2f306c5cd2a4a43; expires=Mon, 24-Nov-2008 21:44:01 GMT; path=/\r\n
Location: info.html\r\n
Content-Encoding: gzip\r\n
Vary: Accept-Encoding\r\n
Keep-Alive: timeout=10, max=100\r\n
Connection: Keep-Alive\r\n
Transfer-Encoding: chunked\r\n
Content-Type: text/html\r\n
\r\n
1a\r\n
0\r\n
\r\n
Das ist alles, was ich zurückbekomme. Außer dem Header also nur diesen kurze ASCII Code, welcher das mit gzip verschlüsselte Dokument darstellt, wenn ich mich nicht irre. (also ich habe den ASCII Code hier als Bild eingefügt. Sonst nimmt das Forum das hier nicht an.)
Wenn ich den ASCII Code entschlüssle mit gzip, wie in meinem vorherigen Beitrag beschrieben, dann erhalte ich einen leeren String.
Wenn man sich per Browser (getestet mit Firefox) einloggt, dann ist bis hier her alles genauso, wie ich es mit meinem php-skript mache.
Auf diesen 302 Response sendet Firefox nun aber den folgenden Request:
GET /head.php?showmus=1 HTTP/1.1\r\n
Host: ...\r\n
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n
Accept-Encoding: gzip,deflate\r\n
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n
Keep-Alive: 300\r\n
Connection: keep-alive\r\n
Referer: http://.../info.html\r\n
Cookie: name=34485; sessionid=a601b21fea9f31fdc2f306c5cd2a4a43\r\n
\r\n
Ich habe nicht verstanden, warum der Browser diesen Request schickt. Ich weiß nicht, woher er die Adresse "/head.php?showmus=1" hat.
Deswegen hatte ich einen anderen Request auf die obere 302 Response geschickt und zwar folgenden:
GET /info.html HTTP/1.1\r\n
Host: ...\r\n
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n
Accept-Encoding: gzip,deflate\r\n
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n
Keep-Alive: 300\r\n
Connection: keep-alive\r\n
Cookie: name=34485; sessionid=a601b21fea9f31fdc2f306c5cd2a4a43\r\n
\r\n
Die Response vom Server sieht dann so aus:
HTTP/1.1 200 OK\r\n
Date: Mon, 24 Nov 2008 21:09:13 GMT\r\n
Server: Apache/1.3.33 (Unix) (Gentoo/Linux) PHP/4.3.10 mod_gzip/1.3.26.1a\r\n
Last-Modified: Thu, 22 May 2008 12:34:51 GMT\r\n
ETag: "f0e84-1dd-4835686b"\r\n
Accept-Ranges: bytes\r\n
Content-Length: 477\r\n
Keep-Alive: timeout=10, max=100\r\n
Connection: Keep-Alive\r\n
Content-Type: text/html\r\n
\r\n
Der Server schickt mir hier keinerlei Daten nach dem Header mit. Also kein Dokument, oder sonstwas, obwohl "Content-Length" = 477 ist.
Das verstehe ich nicht.
Muß ich da nochmal nachfragen, um den Inhalt (also das Dokument) zu erhalten?
Ich hoffe ich konnte mein Problem vollständig und verständlich vermitteln :)
Wäre super, wenn Du, oder sonst wer mir weiterhelfen könnte.
Viele Grüße,
Christian