2008-11-14 19 views
15

Mam stronę ASP.Net, która zawiera przycisk. Ta strona zawiera przycisk PayPay ServerSide.Jak usunąć stronę z historii przeglądarki?

Kiedy pchnął mój serwer robi różne mądre rzeczy na tylnym końcu, a następnie przepisuje odpowiedź jako forma i niektóre javascript, które posty to forma paypal ..

To wszystko działa świetnie.

Jeśli jednak użytkownik kliknie ponownie, otrzyma on wygenerowany formularz samoopisu i prześle je do Paypal.

Pomyślałem, że jeśli uda mi się znaleźć sposób, aby moja generowana strona formularza nie istniała w historii, rozwiąże to mój problem. ale nie mam pojęcia, jak to poprawić.

Jak mogę usunąć swoją stronę z historii lub po prostu jej nie wyświetlać?

Aktualizacja: Podziękowania dla wszystkich ... To są świetne odpowiedzi. Wznowieniu wszystkich dobrych, ale poszło z splattne ze względu na sprytne wykorzystanie ukrytego pola zamiast ciasteczek na podstawie decyzji.

Odpowiedz

6

Nie jestem pewien, czy da się to zrobić. Ale tutaj jest pomysł, w jaki sposób można zapobiec ponownemu przesłaniu formularza.

Można wstawić ukryte dane wejściowe w formularzu, które na początku byłyby puste. Po przesłaniu napiszesz wartość w tym polu i upewnij się, że sprawdzasz każdą próbę przesyłania, jeśli to pole jest puste.

Jeśli nie jest pusty przy wysyłaniu, wiesz, że formularz został wcześniej wysłany i możesz ostrzec użytkownika.

+0

Świetne ... właściwie myślę, że jeśli odkryję, że ta wartość jest już zaludniona, to po prostu wykonam kolejną kopię :) –

5

Jako aplikacja internetowa nigdy nie będziesz mieć pełnej kontroli nad przeglądarką użytkownika. Nawet gdyby istniał sposób na nakazanie przeglądarce, aby nie zapisywała strony w historii, co do której wątpię, nie można mieć pewności, że zadziała. Na przykład sprytny użytkownik może zmodyfikować przeglądarkę open source, aby przechowywać każdą stronę w historii, bez względu na wszystko.

Myślę, że powinieneś spróbować podejść do problemu z innej strony. Możesz na przykład wykryć, że jest to ta sama forma, która jest przekazywana i nie wysyłać jej do systemu PayPal po raz drugi. Ważne jest, aby zrobić to po stronie serwera.

+0

Po powrocie użytkownika ze strony PayPal, przeglądarka ponownie pobiera wygenerowany formularz z pamięci podręcznej i ponownie sam się wysyła. Nie ma już żadnego kontaktu z serwerem. Więc nie widzę, jak mogę użyć serwera, aby temu zapobiec. –

+0

Sugerujesz, że mógłbym mieć autogenerated formularz mieć jakąś warunkową logikę, która albo wysyła lub wykonuje inny powrót() .. na jakiej logice może to opierać? –

+0

Co mogę powiedzieć ... splattne odpowiedział na to pytanie w ciągu kilku sekund od mojego pytania :) –

2

Być może przed wysłaniem formularza można ustawić plik cookie.

Po załadowaniu strony sprawdź, czy istnieje plik cookie (co oznacza, że ​​formularz został już przesłany). Jeśli zostanie znaleziony, zamiast automatycznie przesłać formularz, automatycznie ponownie (window.history.back()) ponownie.

19
window.location.replace(URL); 

window.location:

zastąpić (URL)

Wymień bieżący dokument z jedno w przewidzianym URL. różnica od metody assign() jest że po użyciu wymienić() obecny strona nie zostanie zapisana w sesji historii, co oznacza, że ​​użytkownik nie będzie stanie wykorzystać przycisk Wstecz, aby nawigować do niego.

+1

Nie sądzę, że to zadziała, ponieważ jestem zobowiązany do opublikowania bieżącej strony w celu przesłania dane potrzebne do paypal. Dlatego mam js -> "document.getElementById (" form1 "). Submit();" którego nie mogę zastąpić twoją sugestią "zastąp" –

+0

Niestety, to nie działa w Spotify. – schlingel

+0

Może to nie odpowiadać temu, czego szukał OP, ale naprawdę pomogło mi to z innym problemem. Dzięki! – Danation

2

Nie jestem pewien, czy można to zrobić z łatwością integracji PayPal, ale "Post/Redirect/Get" wzór może być stosowany w celu rozwiązania tego problemu

0

Przydatna wskazówka dla niektórych może być to ...

window.history.go(-2); 

szczególnie w momencie pojawienia się okna z ostrzeżeniem o braku obciążenia.

0

Możesz po prostu zaprogramować swoją stronę, aby nie przesyłać lub coś zrobić/nawigować gdzieś indziej, jeśli window.referer jest stroną Paypal, której próbujesz uniknąć po raz drugi.

Powiązane problemy