2008-11-14 13 views
15

Ich habe eine ASP.Net-Seite, die eine Schaltfläche enthält. Diese Seite enthält eine ServerSide Paypal-Schaltfläche. verschiedene kluge Dinge am hinteren EndeWie entferne ich eine Seite aus dem Browserverlauf?

Wenn mein Server schaltet sich gedrückt und dann schreibt die Antwort als eine Form und einige Javascript zu PayPal, die Beiträge dieses Formular ..

Das alles funktioniert super.

Wenn der Benutzer dann jedoch zurückklickt, wird er bei meinem generierten Selbsteintragungsformular ankommen und das wird dann wieder an Paypal weitergeleitet.

Ich dachte, wenn ich einen Weg finden könnte, meine generierte Formularseite nicht in der Geschichte zu haben, dann wird dies mein Problem lösen. aber ich habe keine Ahnung, wie ich das korrigieren soll.

Wie kann ich meine Seite aus dem Verlauf entfernen oder einfach nie erscheinen lassen?

Update: Danke an alle ... Das sind einige gute Antworten. Upvoted alle guten, aber ging mit Splattne wegen cleverer Verwendung von versteckten Feld statt Cookies für die Entscheidungsgrundlage.

Antwort

6

Ich bin mir nicht sicher, ob das getan werden kann. Aber hier ist eine Idee, wie Sie die Wiedervorlage des Formulars verhindern können.

Sie könnten eine versteckte Eingabe in Ihrem Formular einfügen, die zu Beginn leer wäre. Beim Senden schreiben Sie einen Wert in dieses Feld und stellen sicher, dass Sie bei jedem Übermittlungsversuch prüfen, ob dieses Feld leer ist.

Wenn es beim Senden nicht leer ist, wissen Sie, dass das Formular zuvor gesendet wurde und Sie den Benutzer warnen können.

+0

Toll ... eigentlich denke ich, wenn ich feststelle, dass dieser Wert schon belegt ist, dann werde ich einfach nochmal eine zurück ausführen :) –

5

Als Webanwendung haben Sie nie die volle Kontrolle über den Browser des Benutzers. Auch wenn es eine Möglichkeit gibt, den Browser anzuweisen, die Seite nicht im Verlauf zu speichern, was ich bezweifle, kann man nicht sicher sein, dass es funktioniert. Ein cleverer Benutzer könnte beispielsweise einen Open-Source-Browser optimieren, um jede Seite im Verlauf zu speichern, egal was passiert.

Ich denke, Sie sollten versuchen, das Problem aus einem anderen Blickwinkel zu nähern. Sie könnten beispielsweise feststellen, dass es sich um dasselbe Formular handelt, das weitergeleitet wird, und es nicht zum zweiten Mal an paypal gesendet wird. Das Wichtigste ist, es serverseitig zu machen.

+0

Wenn der Benutzer von der Paypal-Seite zurückkommt, ruft der Browser das Generated-Formular aus seinem Cache ab und meldet sich selbstständig erneut. Es besteht kein weiterer Kontakt zum Server. Ich sehe also nicht, wie ich den Server dazu benutzen kann, dies zu verhindern. –

+0

Schlägst du vor, dass ich die automatisch generierte Form eine bedingte Logik haben könnte, die entweder eine andere zurücksetzt oder ausführt() ... auf welcher Logik könnte es basieren? –

+0

Was kann ich sagen .... Splattne beantwortete diese Frage innerhalb von Sekunden nach meiner Frage :) –

2

Vielleicht könnten Sie einen Cookie setzen, bevor Sie das Formular absenden.

Wenn die Seite geladen ist, prüfen Sie, ob der Cookie vorhanden ist (dh, das Formular wurde bereits gesendet). Wenn das Formular nicht automatisch gesendet wird, gehen Sie automatisch zurück (window.history.back()).

19
window.location.replace(URL); 

window.location:

ersetzen (URL)

Ersetzen das aktuelle Dokument mit dem einer an der URL bereitgestellt. Die Differenz aus dem assign() Methode ist , dass nach ersetzen() verwendet die aktuelle Seite wird nicht in der Sitzung Geschichte gespeichert werden, wird der Benutzer bedeutet nicht können sie auf die Schaltfläche Zurück zu navigieren verwenden.

+1

Ich glaube nicht, dass das funktionieren wird wie ich die aktuelle Seite posten muss um zu übertragen die Daten, die für Paypal benötigt werden. Daher habe ich einige js -> "document.getElementById ('form1'). Submit();" was ich nicht durch deinen "Ersetzen" Vorschlag ersetzen kann –

+0

Leider funktioniert das in Spotify nicht. – schlingel

+0

Das mag zwar nicht zu dem passen, was der OP suchte, aber es half mir wirklich mit einem anderen Problem. Vielen Dank! – Danation

2

Ich bin mir nicht sicher, ob Sie diese einfach mit PayPal-Integration zu tun, aber das "Post/Redirect/Get" Muster verwendet werden kann, um dieses Problem für einige

0

Ein nützlicher Hinweis hierfür könnte sein, Adresse ...

window.history.go(-2); 

vor allem in der Einführung einer Last Fehlerwarnung Popup.

0

Sie könnten Ihre Seite einfach programmieren, um sie nicht zu senden oder etwas zu tun/woanders zu navigieren, wenn window.referer die Paypal-Seite ist, die Sie vermeiden möchten, ein zweites Mal aufzurufen.

Verwandte Themen