Einen Request absetzen, ohne Seite zu verlassen
Patrick
- php
0 ulli0 Sven Rautenberg0 Sascha Knappe0 Patrick
Hi Forum,
die Überschrift ist etwas umständlich ausgedrückt, sorry.
Mein Problem:
Ich muss aus PHP heraus eine Webadresse aufrufen, aber diese Seite nicht zeigen.
In der Adresse bringe ich ein paar Parameter unter, die an die Webadresse übergeben werden sollen. Der Aufruf geschieht in einem IFrame.
Nur wie schicke ich den Aufruf an die Adresse ab?
Habs mit fsockopen versucht, Fehler!
Was kann man da machen???
Erst mal mein Scriptauszug:
$domainstr = "http://www.domain.de/seite.php?param=x¶m2=y";
$fp = fsockopen($domainstr, 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fputs ($fp, "GET / HTTP/1.0\r\n\r\n");
while (!feof($fp)) {
echo fgets($fp,128);
}
fclose($fp);
}
Vielen Dank
Patrick
hallo
sieht so aus, als wenn dir das hier weiter helfen könnte:
$fh = fopen('http://www.domain.de/datei.php','r');
while(!feof($fh)) {
$page .= fread($fh,1048576);
}
fclose($fh);
Ist irgendwie komisch mit fopen eine url zu öffnen oder? aber es geht =)
cu
ulli
Moin!
Ist irgendwie komisch mit fopen eine url zu öffnen oder? aber es geht =)
Nicht immer! Dazu muß "allow_url_fopen" eingeschaltet sein - und das kann man nicht selbst tun, wenn der Provider es ausgeschaltet hat.
- Sven Rautenberg
Moin!
Habs mit fsockopen versucht, Fehler!
Weil du die Domain an der falschen Stelle eingesetzt hast.
Was kann man da machen???
Das ändern. :)
Erst mal mein Scriptauszug:
Der sieht stark so aus, wie das Beispiel von php.net für fsockopen.
Das ist eigentlich ein funktionierendes Beispiel.
$domainstr = "http://www.domain.de/seite.php?param=x¶m2=y";
Das ist die abzurufende URL. Aber du mußt HTTP sprechen. Das bedeutet:
1. Aufbau einer TCP-Verbindung zum Server, der sich hinter "www.domain.de" versteckt.
2. Abruf der Seite "/seite.php?param=x¶m2=y"
$fp = fsockopen($domainstr, 80, $errno, $errstr, 30);
Hier wird die Verbindung hergestellt zum Server.
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fputs ($fp, "GET / HTTP/1.0\r\n\r\n");
Und hier wird mittels HTTP die Seite abgerufen.
Es ist eine sehr gute Idee, im fputs noch einzufügen, dass ein HOST-Header mitgesendet wird.
fputs($fp, "GET ".$seitenurl." HTTP/1.0\r\nHost: ".$domain."\r\n\r\n";
Ungetestet, daher ohne Gewähr für 100% Korrektheit.
while (!feof($fp)) {
echo fgets($fp,128);
}
fclose($fp);
}
- Sven Rautenberg
Hallo Patrick,
musste sowas auch mal umsetzen. Probiere es mal so
$domainstr = "http://www.domain.de";
$fp = fsockopen($domainstr, 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
fputs ($fp, "GET /seite.php?param=x¶m2=y HTTP/1.0\r\n\r\n");
while (!feof($fp)) {
echo fgets($fp,128);
}
fclose($fp);
}
Schönen Gruß
Sascha
Hi Sven,
hat geklappt.
Vielen Dank
Patrick