Daten per POST im Header übergeben

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

  • Daten per POST im Header übergeben

    Hallöchen,

    ich möchte mittels PHP ein Formular verarbeiten und bestimmte Werte dann an einen anderen Sever per POST übertragen. Ich will sogar ganz auf diesen Server springen.

    Per fsockopen() kann ich zwar die Daten übermitteln und bekomme ein Result, aber ich bleibe mit meinem Script auf meinem Server.

    Also habe ich versucht mit header() auf den anderen Server zu springen, aber daran scheitere ich. Mit header("Location:" $url) komme ich zwar auf den Server, aber wie nehme ich meine POST Variablen mit?

    Grüße,
    Andi

  • #2
    Hui, das könnte interessant werden.

    Mit Post kann ich dir leider auch nicht sagen, hab ich nie gemacht...
    Geht das?

    Per Get fällt aus?

    DirtyHack: HTML Form bauen und per JavaScript Timeout den Form übermitteln....

    Kommentar


    • #3
      schau dir fsockopen mal an. insbesondere die user contributed notes

      Kommentar


      • #4
        Der andere Server verlang ausschließlich die Werte per POST.

        Ich habe folgemde Funktion:
        PHP-Code:
        function sendToHost($host,$port,$path,$data)
        {                
            
        $fp fsockopen($host,$port);
            
            
        fputs($fp"\n");
            
        fputs($fp"POST $path HTTP/1.1\n");
            
        fputs($fp"Host: $host\n");
            
        fputs($fp"Content-type: application/x-www-form-urlencoded\n");
            
        fputs($fp"Content-length: " strlen($data) . "\n");
            
        fputs($fp"Connection: close\n\n");
            
        fputs($fp$data."\n\n");
              
            
        $buf "";
                
            while (!
        feof($fp)){
                
        $buf .= fgets ($fp,4096);
            }
                
            
        fputs($fp"\n");
            
        fclose($fp);
            
            
        preg_match("#<html>.*</html>#is"$buf$output);
            
            return 
        $output[0];

        Die funktioniert auch ganz prima, nur bleibe ich damit auf meinem Server und ziehe mir damit die Ausgabe des anderen Servers. Aber ich will schon, dass ich dann auch mit meiner URL komplett auf dem anderen Server bin.
        Habe schon versucht die Eigenschaften in den fputs() einfach nur so per header() aufzurufen, aber das haut nicht hin.

        Kommentar


        • #5
          http://www.php-faq.de/q/q-code-post.html

          edit:
          wenn ich dich richtig verstehe...
          was du vorhast ist nicht ganz durchdacht...

          - "auf einen anderen server springen" geht nur mit "Location: ...". diesen header muss dein server dem browser schicken.

          - wenn du aber etwas post2host-en möchtest, geht die anfrage von deinem server an den fremden server.

          sie zu vereinen ist afaik unmöglich.
          Zuletzt geändert von penizillin; 10.06.2005, 15:39.

          Kommentar


          • #6
            anders gesagt: du möchtest, dass die Daten von anderen Site zu deinem Server gesendet werden? Na, willste denn fremde Username und PW grabben?

            Kommentar


            • #7
              Nein, genau andersrum: Ich habe auf meinem Server ein Formular, welches ich verarbeite und dann bestimmte Daten an einen anderen Server weiter leiten muß. Ist für ein Kreditkartensystem.
              Nachdem ich den Warenkorb bearbeitet habe, muss ich Betrag und Identifikation an den Bank-Server schicken, wo dann die Kreditkarteneingabe geschieht.
              Das Bank-System sieht aber vor, dass man die quasi ein Formular einrichtet, auf dem dann der Betrag noch mal steht, und als hidden-field die Bestellnummer und meine Kundenidentifikation. Das wird dann per POST an den Bankserver übermittelt.

              Auf Kundenseite bedeutet dass dann aber: Warenkorb absenden, Eingangsseite zum bankserver absenden und dann die Kreditkarten-Daten absenden.

              Da ich beim Absenden des Warenkorbs ja dann schon weis, ob der Kunde per Bankeinzug oder Kreditkarte zahlen will, will ich ihn gleich zur Kreditkarteneingabe weiter führen, ohne dass er noch mal irgendwo zwichendurch nutzlos klicken muß.

              Dank & Grüße,
              Andi

              Kommentar


              • #8
                - verarbeite die daten
                - spucke ein formular mit hidden-fields aus, dass per javascript submitted wird => action=fremder server
                - setze in den noscript-bereich einen submit-button für user, die js deaktiviert haben

                ... mal als vorschlag
                Kissolino.com

                Kommentar


                • #9
                  @penizillin:
                  Aber per fsockopen() kann ich ja genau dies machen - ich sende header-informationen an den anderen Server.
                  Und wenn ich mit header("Location" auch zum anderen Server springen kann, dann muss sich dass doch irgendwie kombinieren können.

                  @Wurzel: Das geht natürlich auch - gute Idee. Ist zwar nicht die feine Art, aber zur Not machbar.
                  Warum fallen mir so einfache Sachen nicht ein?

                  Grüße,
                  Andi

                  Kommentar


                  • #10
                    OK, mal anders rum gefragt:
                    Kann ich denn meiner ausgegebenen Seite vorgaugeln sie sei auf einem anderen Server?

                    Ich habe mal irgendwo was mit "basedir" gesehen, wo dann alle Pfadangaben relativ zu der angegebenen URL waren.

                    Mein Grundsätzliches Problem:
                    Ich könnte mir den Result der POST-Daten mit fsockopen() vom Bankserver holen. Jedoch zieht der ein Javascript und Bilder über eine relative URL. Auch das Formular für die Kreditkartendaten geht an eine relative URL.

                    OK, ich könnte alle Vorkommnisse der Pfadangaben per preg_replace() auf die absolute URL setzen. Oder gibts einen Trick, dass der Quellcode zwar von meiner Seite ausgeliefert wird, der Rest aber seinen Pfad zum anderen Server kennt, obwohl die Pfade relativ im Quellcode stehen.

                    Ich weis, dass man mit genanntem "basedir" (wie auch immer das eingesetzt wird - muß ich noch mal schauen) auf einem Server so das Stannverzeichnis angeben kann, aber kann man so evtl. auch den Pfad zu einem anderen Server angeben?

                    Kennt sich da wer aus?

                    Grüße,
                    Andi

                    Kommentar


                    • #11
                      OK ich habs!

                      Es ist so, dass ich ein Template mit Platzhaltern auf den Bankserver lege, in welche dann die Javascript-Quelle und Bildpfade eingefügt werden.

                      Ich habe jetzt im Head des Templates einfach
                      <BASE HREF="http://bankserver">
                      eingefügt - schon kann ich das Formular absenden und die Bilder und Scripts gehen auch.
                      Ich wusste, irgendwas mit "Base" war es. Also nix mit basedir.

                      Hoffe nur das läuft auf allen Browsern

                      Grüße,
                      Andi

                      Kommentar

                      Lädt...
                      X