2009-05-26 2 views
0

die Frage ist im Titel wirklich.Kann ich mich nach der Weiterleitung von einem anderen Server auf die Sitzungsverfügbarkeit verlassen?

Ich habe ein Online-Formular, wo der Benutzer nach einer Reihe von Stufen zu einem Zahlungs-Gateway auf einem anderen Server gesendet wird, und dann wieder nach dem Ausfüllen ihrer Daten dort (keine Karte oder persönliche Informationen gesendet wird, nur verschlüsselte Token , das ist der Punkt).

So kann ich vertrauen auf die Sitzungsdaten noch verfügbar sind, wenn sie zurückgeschickt werden (via POST?) Und auch sollte ich tun?

Meine Tests scheinen zu zeigen ja, aber dies ist das erste Mal, dass ich versucht habe, so etwas zu tun. Die Alternative besteht darin, den Formularfortschritt zu speichern, bevor die Weiterleitung & dann wieder aktiviert wird, wenn sie zurückkehrt. Wäre das besser? & warum wenn ja?

TIA :)

Antwort

0

Es ist auf der Timeout der Sitzung abhängig ist und ob der Apache-Abstürze/Neustarts. Wenn Sie einen ausfallsicheren Weg benötigen, dann bewahren Sie die Sitzungsinformationen in einer Datenbank auf.

+0

Dank JD, das ist mein insgesamt war Gefühl, bevor ich die Frage gestellt habe. Ich werde die Sitzung auf jeden Fall speichern. – da5id

0

Hängt davon ab. Wahrscheinlichkeiten sind Ihre PHP Sitzungen werden gehandhabt, indem man ein Plätzchen verwendet, das die Sitzungsidentifikation speichert, aber wenn Ihr Kunde Plätzchen abstellt, dann kann (abhängig von Konfiguration/Gebrauch von SID) es der Abfrage Schnur hinzugefügt werden. Im Fall von Cookies sollte es kein Problem sein - die Sitzung sollte fortgesetzt werden. Wenn Cookies deaktiviert sind, sind Sie darauf angewiesen, dass Ihr Payment-Gateway-Anbieter die Sitzungs-ID bei der Rückgabe des Kunden zurückgibt.

bearbeiten: nur hinzufügen, wenn der Kunde nicht abgemeldet wird (Sitzung beendet), Speichern des Formulars Daten in Sitzungsvariablen sollten kein Problem sein.

Aus Sicherheitsgründen möchten Sie vielleicht sicherstellen, dass die Sitzung irgendwie auf eine IP beschränkt ist (überprüft bei jedem Laden der Seite, um sicherzustellen, dass es übereinstimmt), um sicherzustellen, dass die Sitzung nicht vom Zahlungsgateway oder anderen skrupellosen gehackt wird Mann in der Mitte (nur ein Problem, wenn Cookies deaktiviert sind und die Abfragezeichenfolge die PHPSESSID enthält).

1

Ja, Sie können sich im Allgemeinen auf diese Arbeit verlassen.

Ihre Sitzung wird immer noch auf die normale Weise auslaufen. Solange Sie erwarten, dass Ihr Kunde weniger Zeit auf der Website von Drittanbietern verbringt, als für die Sitzung erforderlich ist, sollten Sie in Ordnung sein.

Ich mache genau das, was Sie vorschlagen, mit einigen Websites, die ich pflege, und es gibt keine ernsten Probleme. Ich schätze, es könnte komplizierter sein, wenn bei einem großen Prozentsatz Ihrer Kunden Cookies deaktiviert sind, aber wenn Sie mit der Öffentlichkeit zu tun haben, ist dies wirklich kein Problem.

Die meisten Zahlungsgateways ermöglichen es Ihnen jedoch, ihnen zusätzliche Informationen zu übermitteln, die sie an Sie senden, wenn sie den Kunden zu Ihrer Site zurückbringen. Auch wenn sie nicht über eine integrierte Methode verfügen, fügen Sie GET-Parameter zu der URL hinzu, die sie verwenden, um den Kunden an Sie zurückzugeben. Es lohnt sich, hier eine ID oder eine Bestellnummer hinzuzufügen, damit Sie etwas tun können, auch wenn die Sitzung bereits verstorben ist.

HINWEIS: Einige Zahlungsdienste geben den Kunden am Ende der Transaktion nicht wirklich an Ihre Site zurück, sondern rufen stattdessen Ihren Server an, um Sie darüber zu informieren, dass eine bestimmte Zahlung abgeschlossen wurde. In dieser Situation ist Ihre Sitzung nicht intakt, da es nicht der Kunde ist, der die Anfrage von Ihrem Webserver stellt.

+0

Prost Rikh, guter Rat für Payment Gateways im Allgemeinen. Dies ist jedoch eine benutzerdefinierte Implementierung - das erste Mal, dass sie es (und ich) so gemacht haben. Ich fühle mich, als wäre ich einigermaßen sicher, mich auf die Sitzung zu verlassen, aber ich denke, ich werde es trotzdem speichern. – da5id

0

Wenn Sie sicherstellen möchten, dass die Sitzung verfügbar ist, können Sie das Session-Cookie-Timeout wie so bearbeiten:

session_set_cookie_params(604800); 
session_start(); 

, dass das Cookie 1 Woche verfallen machen wird nach seiner erstellt. Der Standardwert ist, dass es abläuft, wenn der Browser geschlossen wird.

Sie können mehr über sie hier

http lesen: // uk3.php.net/manual/en/function.session-set-cookie-params.php

Verwandte Themen