POST per fsockopen - Weiterleitung?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • POST per fsockopen - Weiterleitung?

    Hallo Leute,

    ich schicke HTTP-Headerdaten per fsockopen mit POST an eine php-Datei. Die Datenübermittlung funktioniert zwar, allerdings möchte ich, das der User (welcher das fsockopen-Script aufruft) an die Zieldatei des Posts weitergeleitet wird (derzeit nicht der Fall).

    Also quasi so, als wenn ich im Browser ein Formular versende - da komm ich ja auch bei der Datei raus, an die das Formular versandt wird.

    ich hoffe ihr habt da ne Lösung!

  • #2
    du musst doch nur den Response des scripts das du per fsockopen() aufrufst auslesen und entsprechend reagieren - oder versteh ich dich falsch?
    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
    Schön - etwas Geschichte kann ja nicht schaden.
    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

    Kommentar


    • #3
      die weiterleitung an die zielresource selber sollte ja mit header() kein problem sein. allerdings stehen dir dann nicht die postdaten zur verfügung.

      da wirst du auch glaube ich keine chance haben. weil die zielresource ja an eine andere adresse (die des servers) gesendet wird. nicht an die des users.

      kannst höchstens die seite von deinem server ausgeben lassen.

      Kommentar


      • #4
        tja ich weiss nicht... die Response enthält auch den HTTP-Header, den müsste ich dann für die Ausgabe "wegschneiden" (wär ne Möglichkeit).
        So wie bei Formularen, das ich auf die Datei die in action="" angegeben wird weitergeleitet werde, gehts wohl nicht?

        Gruß, Tommsen

        Kommentar


        • #5
          ich fürchte ich verstehe immer noch nicht ganz - kannst du mal kurz Schritt für Schritt die einzelnen gewünschten Abläufe erklären?
          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
          Schön - etwas Geschichte kann ja nicht schaden.
          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

          Kommentar


          • #6
            ok, also es gibt eine Datei submituser.php, diese enthält folgendes:

            PHP-Code:
            function PostToHost($host$path$referer$data_to_send) {
              
            $fp fsockopen($host8080);
              
            fputs($fp"POST $path HTTP/1.1\r\n");
              
            fputs($fp"Accept: */*\r\n");
              
            fputs($fp"Host: $host\r\n");
              
            fputs($fp"Referer: $referer\r\n");
              
            fputs($fp"Content-type:  application/x-www-form-urlencoded\r\n");
              
            fputs($fp"Connection: close\r\n\r\n");
              
            fputs($fp$data_to_send);

              while(!
            feof($fp)) {
                    
            $res .= fgets($fp128);
              }
              
            fclose($fp);
              return 
            $res;
            }

            $data "user=testuser.t";

            $x PostToHost(
                          
            "localhost:8080",
              
            "/authentication/main.php",
              
            "http://localhost:8080/authentication/submituser.php",
                          
            $data
            ); 
            jetzt kann ich natürlich per
            PHP-Code:
            echo $x
            die Response ausgeben, allerdings enthält die ja auch die HTTP-Daten der Antwort.
            Ich würde das ganze gern wie ein POST-Formular verwenden, nur das eben kein User einen Submit machen muss (Javascript scheidet sowieso aus).

            Kommentar


            • #7
              Original geschrieben von Tommsen

              die Response ausgeben, allerdings enthält die ja auch die HTTP-Daten der Antwort.
              meinst du mit HTTP-Daten die HTTP-Header? die kannst ja einfach abschneiden - ich fürchte ich raff immer noch ned was du erreichen willst
              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
              Schön - etwas Geschichte kann ja nicht schaden.
              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

              Kommentar


              • #8
                also, ein Ablauf bei Versand eines normalen Formulars aus einer normalen html-Datei im Browser:

                datei_a.html (form action="datei_b.php") --> submit --> datei_b.php

                datei_b.php wird im Browser angezeigt, in der Adressleiste steht datei_b.php und hat Zugriff auf die per POST versandten Daten).


                jetzt der Ablauf bei mir:

                datei_a.php (http-Daten an datei_b.php) <---> datei_b.php (http-Daten an datei_a.php)

                datei_b.php wird im Browser angezeigt, allerdings mit HTTP-Header (ok, kann man wegmachen),[B] in der Adressleiste steht datei_a.php

                kann bei mir nicht auch datei_b.php in der Adresszeile stehen, sprich ne Weiterleitung an die Zielseite inkl. Postdaten?

                Kommentar


                • #9
                  Ah - TobiaZ hats scheinbar von Anfang an verstanden - muss ihm dann auch zustimmen, dass du da wohl keine Chance hast. Ein Webserver kann ja nur an die IP antworten, die ihn aufgerufen hat und das ist in deinem Fall die IP des Servers auf der datei_a.php (das ist die mit Post2Host, oder?) und nicht an die, desjenigen, der dieses Script überhaupt aufruft.

                  Hmm, ist 'dabei_b.php' auch von dir, oder versuchst du fremde Scripte zu 'befüllen'?

                  wenn die Datei von dir ist, gäbe es evtl. doch ne Möglichkeit...
                  Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                  Schön - etwas Geschichte kann ja nicht schaden.
                  Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                  Kommentar


                  • #10
                    ja, ist meine Datei!

                    ausserdem noch eine Frage zum Header wegschneiden:

                    wenn ich den HTTP-Header der Response wegschneide, steht leider vor allen Inhalten der Response ein Zeichen, etwa so:

                    f Postuser: testuser.t
                    a ENV: testuser.t

                    sollte aber sein:

                    Postuser: testuser.t
                    ENV: testuser.t

                    woher kommt das?

                    Kommentar


                    • #11
                      Dann arbeite in datei_b.php mit Sessions (Sessid in Url übergeben) - lies in datei_a.php die generierte Sessid aus und leite per Header dann um und gib die Sessid mit.

                      header("Location: http://www.zweitedomain.de/datei_b.p...afdafdasdfdasf");

                      so in etwa müsstest das hinkriegen.

                      Was das andere ist kann ich dir ned sagen - wie schneidest den die HTTP-Header ab?
                      Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                      Schön - etwas Geschichte kann ja nicht schaden.
                      Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                      Kommentar


                      • #12
                        das muss ich mir mal ansehen...

                        Zuschnitt derzeit so:

                        PHP-Code:
                        $x strstr($x"\r\n\r\n"); 
                        danke dir für deine Mühe!

                        Kommentar


                        • #13
                          sollte eigentlich so passen - Ausgabe-Quelltext von dem ganzen schonmal angeschaut?
                          Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                          Schön - etwas Geschichte kann ja nicht schaden.
                          Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                          Kommentar


                          • #14
                            ja, da stehen genau diese Zeichen mit drin.

                            Kommentar


                            • #15
                              auch schon bevor du den Header abschneidest?
                              Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                              Schön - etwas Geschichte kann ja nicht schaden.
                              Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                              Kommentar

                              Lädt...
                              X