Redirect bei fsockopen?

TS-JC

Erfahrenes Mitglied
Hallo

also ich rufe eine Webseite per fsockopen auf.
Nun wird diese intern weitergeleitet.
Bei einer Seite klappt das.

Aber wenn ich mehrere dieser Seiten nach ein ander durchlaufe gehts schief.
Wenn ich mir nun die Rückgabe angucke ist diese leider immer von der vorherigen Seite und nicht der aktuellen.

Wie kriege ich also in $res die aktuelle Seite rein?

Hier mein Script
PHP:
	$fp = fsockopen($host, 80);
	fputs($fp, "POST /$url HTTP/1.0\n");
	fputs($fp, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; QXW03411; i-NavFourF)\n");
	fputs($fp, "Host: $host\n");
	fputs($fp, "Accept: text/html, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\n");
	fputs($fp, "Accept-Language: de\n");
	fputs($fp, "Accept-Charset: windows-1252, utf-8, utf-16, iso-8859-1;q=0.6, *;q=0.1\n");
	fputs($fp, "Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0\n");
	fputs($fp, "Connection: Keep-Alive, TE\n");
	fputs($fp, "TE: deflate, gzip, chunked, identity, trailers\n");
	fputs($fp, "Referer: $referer/rn");
	fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
//	fputs($fp, "Cookie: ".$cookie."\r\n\r\n");
//	fputs($fp, "Content-length: ". strlen($data_to_send) ."rn");
	fputs($fp, $data_to_send);
	fputs($fp, "Connection: close\n\n");
	while(!feof($fp)) {
		$res .= fgets($fp, 128);
	}
	fclose($fp);

thx4help
 
Hmm ok.

Also ich rufe mit meinem Script eine Seite wie http://www.gmx.de auf.
Die wird ja nun sofort auf http://www.gmx.net/de weitergeleitet.
Ich lade beim Aufruf den Inhalt der Seite in die Variable $res.
Wenn die Seite nun weiterleitet, habe ich da aber nicht den Inhalt der neuen Seite drin.

Nun rufe ich allerdings nicht gmx auf, sondern bei einem Browsergame verschiedene Inseln.
Jede Insel lässt sich per Koordinaten ansteuern. Ruft man den Link auf, so wird auf die Hauptseite weitergeleitet.
Wenn ich nun in einer Schleife mehrere aufrufe, so hängt der $res-Buffer immer bei der voherigen und nicht bei der aktuellen.

Ich habe es jetzt mal mit file_get_contents() versucht, das scheint besser zu gehen.
Aber dabei kann ich keinen header bestimmen, oder gibt es da auch eine Möglichkeit?

Jetzt besser verständlich?
 
Du musst dann eine Weiterleitung erkennen und dieser folgen. Eine HTTP-Weiterleitung erkennst du an dem „Location“-Header-Feld, in dem die neue URL steht. Eine Weiterleitung auf HTML-Basis (das so genannte Meta-Refresh) oder JavaScript-Basis ist dagegen schwieriger zu erkennen.
 
Wie genau meinst du das?

Also ind er while Schleife lese ich ja den header mit aus.
Wenn ich dort nun ein Location: finde, weiss ich ja das eine Weiterleitung da ist.
Was genau soll ich dann machen? Die Schleife abbrechen und per fsockopen die neue URL aufrufen? Wie genau funktioniert das, wie kann ich mit fsockopen eine 2. URL aufrufen im gleichen Stream? Oder geht das nicht?
 
Eventuell ist es für dich auch einfacher wenn du cURL verwendest. Dem ist es möglich automatisch einfach die Seiten weiterzufolgen wenn man die entsprechenden optionen einstellt.
 
Zurück