[PHP] Problem mit header / URL-Änderungen

syntec

Lt. Commander
Registriert
Mai 2005
Beiträge
1.057
Ich sitze gerade vor dem Problem, dass ich per Formular (POST) Daten an ein Bezahlsystem
absende. Das Bezahlsystem ruft dann widerum ein Script auf meinem server auf und
ruft von diesem Script per GET eine Seite auf, je nach Code der übermittelt wurde.

Diese per GET gezogene Seite verarbeitet dann wieder der Bezahlserver und leitet an meinen
Server weiter. Das alles funktioniert auch, Problem ist:

Im URL-Fenster bleibt immer die Adresse des Bezahlanbieters stehen. Wenn es nur unschön wäre,
wäre das ja vielleicht noch zu verschmerzen, leider verliere ich aber dadurch die session_id und die
bisher gespeicherten Daten, d.h. Sprachauswahl etc.

Ich habe es auch nicht geschafft, per header ('Location: xyhtml') den Browser dazu zu bewegen,
die URL oben im Browser wieder zu ändern bzw. war hat das einfach nicht funktioniert.

Hat jemand eine Idee wie ich eine header sende, der auch die URL auf den letzten Stand
zurückversetzt?

Nochmal in Kurzform:

Ausgang ->
meinserver.de -> sendet POST Daten an
bezahlserver.de checkt und ruft Seiten auf
bezahlserver.de steht immer noch in der URL

meinserver.de SOLL wieder in der URL stehen
 
falscher Ansatz, du darfst deinen Server gar nicht erst verlassen:

1. Ausgang ->
2. dein Server -> sendet POST Request an deinen Server
3. dein Server -> sendet mittels CURL einen POST Request an Bezahlserver
3a. Bezahlserver checkt und ruft Seiten auf
3b. Bezahlserver -> sendet Antwort an deinen Server
3c. dein Server -> verwurstet die Antwort vom Bezahlserver
4. Redirect auf deinen Server

Die Kommunikation mit dem Bezahlserver läuft also für den Besucher transparent ausschließlich auf deinem Server ab, vorallem bleibt die Session ID erhalten.

Anders sieht die Sache aus, wenn der Bezahlserver anhand der gesendeten Daten eine Interaktion mit dem Besucher initiieren muß, bspw. um den Checkcode einer KK zu erfragen, in diesem Fall mußt du hoffen, daß die Möglichkeit existiert dem Bezahlserver eigene Parameter mitzuschicken, die dieser von ersten bis zum letzten Schritt mitschleift, so daß du darauf am Ende des Exkurses wieder zugreifen kannst.

greetings, Keita
 
Der Server MUSS verlassen werden, das Bezahlsystem kann nur so aufgerufen werden.

Ich kann zwar Daten bis zum Ende mit durchschleifen, die kommen aber nicht korrekt
über da die ollen Scripte da immer noch auf die Einstellung register_globals setzen.

Der Aufruf zurück auf meine Seite klappt ja auch, nur das mir die Session und die Daten
fehlen um zu sagen, "Herr XY, die Zahlung hat geklappt".

Sobald ich wieder auf einen der Links meiner zurückgekehrten Seite klicke, ändert sich
auch im Browser die URL wieder, Session da, Benutzerdaten da usw.

Deswegen hatte ich auf einen Tipp gehofft wie ich automatisch die URL wieder
zurückbiegen kann um dann mit den Sessiondaten weiterarbeiten zu können.

Klingt alles konfus, aber am Bezahlsystem kann ich leider nichts ändern.
 
Hast du denn keine Möglichkeit dem Bezahlserver die Rücksprung-URL samt Session ID zu übergeben, sprich zur Laufzeit diese zu übermitteln?
Die mitgegebene Session ID zu ermitteln sollte auch mit aktiviertem register_globals kein Problem sein. Dabei solltest du möglichst Bezeichner verwenden, die nicht vom Skript anderweitig genutzt werden, also nicht einfach session_name() . '=' . session_id(), sondern 's=' . session_id() und gezielt mittels $_GET['s'] auslesen. Anschließend machst du einen Redirect auf die selbe Seite, jedoch mit der Session ID als Parameter, also etwas in der Form
PHP:
header('Location: http://example.com/meine/seite.php?' . session_name() . '=' . urlEncode($_GET['s']));

greetings, Keita
 
Ich werde mal ausprobieren was dabei rauskommt wenn ich die komplette URL übergebe.

Glaube allerdings, dass es wenig bringen wird. Ich sitze schon seit Stunden an dem Mist :D

Mich stört einfach diese dämliche URL oben im Browser: Wenn header noch sowas
wie ein target="_blank"> bieten würde...
 
Wie ich es mir gedacht hatte:

Ich komme bis zum Script welches sich die URL je nach response code abgreift

- er leitet auf die Seite weiter (incl. session)
- neue Seite sendet neuen header
- url bleibt die hässliche alte
- neue Seite funktioniert nicht richtig

Irgendwie muss die URL weg...nur wie

EDIT:
Die Lösung ist simpler als gedacht: Einfach auf eine HTML-Seite weiterverlinken die ein HTTP-Refresh enthält.
Auf solche steinzeitlichen html-Lösungen muss man erstmal kommen...
 
Zuletzt bearbeitet: (Lösung hinzugefügt)

Ähnliche Themen

C
Antworten
12
Aufrufe
1.633
H
Antworten
4
Aufrufe
1.392
Hanibani
H
Zurück
Oben