Abschicken von POST-Formular simulieren (per header())

Mamphil

Erfahrenes Mitglied
Hallo,

ich möchte den Payment-Anbieter Sofortüberweisung in ein Shop-System einbinden. Der Kunde soll in der Bestätigungsmail einen Link der Art http://www.shop.url/bezahlen.php?Best=123 erhalten. Darüber soll der Kunde zu Sofortüberweisung weitergeleitet werden.

Grundsätzlich lässt sich eine solche Weiterleitung so durchführen:
PHP:
header('Location: http://neue.url/scriptname.php?parameter1=wert1&parameter2=wert2&etc=pp');
Leider müssen die Parameter zum Sofortüberweisung-Server per POST übermittelt werden. Mit der Methode von oben lassen sich die Parameter leider nur mit GET übermitteln.

Gibt es eine Möglichkeit, den Browser per PHP so zu beeinflussen, dass er so tut, als würde ein POST-Formular abgeschickt werden?

Ich weiß, dass ich das Formular mit hidden-Fields erzeugen und dann per JavaScript einen SUBMIT durchführen kann. JavaScript will ich aber vermeiden, da ansonsten dem Kunden mitgeteilt werden muss, dass er notfalls auf einen Button klickt (was ein Klick zu viel ist ;-) )

Vielen Dank im Voraus für eure Antworten und Anregungen,
Mamphil
 
Du irrst dich ;-)
Die Seite habe ich auch gefunden, allerdings kann ich damit (so wie ich das sehe) nur vom Server ein POST-"Formular" abschicken.

Ich muss aber auf Client-Seite den Versand eines POST-Formulars simulieren.

Trotzdem vielen Dank für deine Antwort!
Mamphil
 
Mit der header()-Funktion können nur Header-Informationen für eine HTTP-Antwort gesetzt werden. Die POST-Methode ist jedoch eine Anfrage-Methode.
 
Hi Gumbo,

vielen Dank für deine Antwort! Dass ich nur HTTP-Antworten schicken kann, ist mir klar. Allerdings dachte ich, dass ich den Browser anweisen kann, etwas zu tun - ähnlich dem Location-Redirect.

Mamphil
 
Boar er hat doch gerade geschrieben dass er das mit HTTP weiß ... kommt der nächste schon wieder mit dem gleichen -.-

http://www.php-faq.de/q/q-code-post.html
Haste es denn schon auf diese Weiße versucht? Simuliert wie du schon erwähnt hast, dass Abschicken eines POST formular -.- dann haste auch deine Variablen, welche du mit $_POST aufrufen könntest wenn ich mir da jetzt mal nicht irre ...
 
Boar er hat doch gerade geschrieben dass er das mit HTTP weiß ... kommt der nächste schon wieder mit dem gleichen -.-

http://www.php-faq.de/q/q-code-post.html
Haste es denn schon auf diese Weiße versucht? Simuliert wie du schon erwähnt hast, dass Abschicken eines POST formular -.- dann haste auch deine Variablen, welche du mit $_POST aufrufen könntest wenn ich mir da jetzt mal nicht irre ...
Vgl. die erste Antwort und meine Antwort darauf ;)

Da es eine dem Location-Redirect ähnliche Methode scheinbar nicht gibt, werde ich mir jetzt eine schön formatierte Seite ausdenken, auf der der Kunde noch einmal alle Informationen erfährt.

Mamphil
 
Hallo,

Du könntest eine Netzwerkverbindung auf Port 80 zum gewünschten Action-Script zum Senden eines POST-Headers aufbauen.

So ein Header kann folgendermassen aussehen:
Code:
$Header  = "POST /".$ScriptFile." HTTP/1.0\r\n"
$Header .= "Host: ".$Host."\r\n"
$Header .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7\r\n"
$Header .= "Connection: close\r\n"
$Header .= "Content-Type: application/x-www-form-urlencoded\r\n"
$Header .= "Content-Length: ".$ContentLen."\r\n"
$Header .= "\r\n".$Content."\r\n\r\n"

(Schreib- oder kleine Denkfehler sind um die Zeit gratis :D )

MfG

Wolf
 
@Hroudtwolf: das stand auch hinter meinem Link, aber das wollte er nicht ...

Aber vom Client aus einen POST-Request zu schicken ist meines Wissens nach nur über das Submit eines Forms möglich ...
 
Zurück