Patrick: Einen Request absetzen, ohne Seite zu verlassen

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&param2=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

  1. 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

    1. 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

  2. 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&param2=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&param2=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

  3. 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&param2=y HTTP/1.0\r\n\r\n");
       while (!feof($fp)) {
           echo fgets($fp,128);
       }
       fclose($fp);
    }

    Schönen Gruß

    Sascha

  4. Hi Sven,

    hat geklappt.
    Vielen Dank

    Patrick