Problem mit fsockopen()
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
anfragen
anscheinend
apache
beitrag
benutzer
connection
date
datei
domain
eingabe
eintrag
fehler
fragen
funktion
letzte
nachtrag
parameter
response
versuchen
-
hallo!
Ich habe da ein Problem mit der Funktion fsockopen(), ich will das man per eingabe einer URL die Website der URL angezeigt bekommt, z.B. www.php.net.
Versuche ich aber eine Verbindung aufzubauen und dann die index Datei aufzurufen, wird nur der header und ein "Moved permanentely" Fehler ausgegeben der auf die urspr?ngliche Seite verweist ausgegeben.
Code:
$fp = fsockopen ("www.php.net", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)\n"; } else { fputs ($fp, "GET / HTTP/1.0\r\n\r\n"); while (!feof($fp)) { echo fgets($fp,128); } fclose($fp); }
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Die Funktion "fsockopen ()" ist deaktiviert!
Mehr gibts dazzu leider nicht zu sagen. ^^ -
@lucas9991:
Nicht immer nur einfach sinnlos antworten bitte.
@topic:
Das ist ein ganz normaler HTTP-Response, den du auswerten musst. In dem HTTP-Header wird auch der Ort angegeben, an der sich die gew?nschte Datei befindet. Du musst den rausfiltern und das ganze dann nochmal mit der neuen Adresse machen.
Nachtrag:
Ich habe es mal selber gemacht und dabei festgestellt, dass der HTTP-Code 301 von php.net "missbraucht" wird. Hier der HTTP-Header:
HTTP/1.1 301 Moved Permanently
Date: Thu, 30 Jun 2005 13:13:44 GMT
Server: Apache/1.3.26 (Unix) mod_gzip/1.3.26.1a PHP/4.3.3-dev
Location: http://www.php.net/
Connection: close
Content-Type: text/html; charset=iso-8859-1
In diesem Fall bekommst du den Fehler, weil auf dem Server anscheinend mehrere Domains gehostet sind oder der Eintrag f?r die einzige Domain als Virtual Host angelegt ist. Du musst daher HTTP 1.1 statt HTTP 1.0 benutzen. Also deine Anfrage einfach ab?ndern nach:
GET / HTTP/1.1\r\nHost: www.php.net\r\n\r\n
Bei HTTP 1.1 muss Host als HTTP-Parameter ?bergeben werden. Den musst du also aus dem String, den der Benutzer eingibt, auch noch rausfiltern. -
@lucas:
Das ist mir schon klar, ich Frage aber allgemein.
@0-checka:
Ich habs ausprobiert, funktioniert auch nicht. Wenn ich Location: rausfiltern w?rde und den Benutzer auf diese Seite weiterleiten w?rde, w?re es ja ein direkter Zugriff vom Benutzer auf die Website, was ich eigentlich nicht will. -
Danke, es funktioniert jetzt Problemfrei.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage