2008-11-14 3 views
15

У меня есть страница ASP.Net, содержащая кнопку. Эта страница содержит кнопку ServerSide Paypal.Как удалить страницу из истории браузера?

При нажатии на мой сервер делает различные умные вещи на заднем конце, а затем переписывает ответ как формы и некоторые JavaScript, какие сообщения этой формы в PayPal ..

Это все прекрасно работает.

Однако, если пользователь затем выбирает, чтобы вернуться, они прибудут в мою созданную форму для самостоятельной публикации, и это снова отправит их в Paypal.

Я думал, что если бы я мог найти способ, чтобы моя страница сгенерированной формы не существовала в истории, тогда это решит мою проблему. но я понятия не имею, как исправить это.

Как удалить мою страницу из истории или просто ее никогда не появлялось?

Обновление: Спасибо всем ... Это отличные ответы. Выиграл все хорошие, но пошел с splattne из-за умного использования скрытого поля, а не файлов cookie для принятия решения.

ответ

6

Я не уверен, что это можно сделать. Но вот идея, как можно предотвратить повторную передачу формы.

Вы можете ввести скрытый ввод в свою форму, которая в начале будет пустым. При отправке вы напишете значение в этом поле и убедитесь, что вы проверяете каждую попытку отправки, если это поле пуст.

Если он не пуст, отправьте сообщение о том, что форма была отправлена ​​ранее, и вы можете предупредить пользователя.

+0

Великий ... на самом деле я думаю, что если я обнаруживаю, что это значение уже заполнено, тогда я просто запустил еще один ответ :) –

5

В качестве веб-приложения вы никогда не сможете полностью контролировать браузер пользователя. Даже если бы был способ сообщить браузеру не хранить страницу в истории, и я сомневаюсь, вы не можете быть уверены, что она сработает. Например, умный пользователь может настроить браузер с открытым исходным кодом для хранения каждой страницы в истории, несмотря ни на что.

Я думаю, вы должны попытаться подойти к проблеме под другим углом. Вы могли бы, например, обнаружить, что это та же самая форма, которая пересылается, а не отправляет ее на paypal во второй раз. Важно сделать это на стороне сервера.

+0

Когда пользователь ударил обратно с страницы PayPal, браузер снова получает Сгенерированную форму из своего кэша и автоматически заполняет свои сообщения. Дополнительный контакт с сервером отсутствует. Поэтому я не вижу, как я могу использовать сервер для предотвращения этого. –

+0

Предполагаете ли вы, что у автогенерированной формы есть условная логика, которая либо отправляет, либо выполняет другую функцию back(). Какую логику можно было бы использовать? –

+0

Что я могу сказать .... splattne ответил на этот вопрос в течение нескольких секунд после моего запроса :) –

2

Возможно, вы можете установить cookie перед отправкой формы.

Когда страница загружена, проверьте наличие этого файла cookie (то есть форма уже была отправлена). Если найдено, вместо автоматической отправки формы, автоматически верните (window.history.back()) еще раз.

19
window.location.replace(URL); 

window.location:

заменить (URL)

Заменить текущий документ с один на предоставленному URL. отличия от метода правопреемника() является , что после использования замены() текущая страница не будет сохранена в истории сеанса , то есть пользователь не будет в состоянии использовать кнопку Назад перейти к нему.

+1

Я не думаю, что это будет работать, поскольку мне необходимо опубликовать текущую страницу для передачи данные, необходимые для оплаты. Поэтому у меня есть несколько js -> "document.getElementById ('form1'). Submit();" который я не могу заменить предложением «заменить» –

+0

К сожалению, это не работает в Spotify. – schlingel

+0

Возможно, это не соответствует требованиям OP, но это действительно помогло мне с другой проблемой. Благодаря! – Danation

2

Я не уверен, если вы можете сделать это легко с интеграцией PayPal, но "Post/Redirect/Get" шаблона может быть использован для решения этой проблемы

0

Полезной Подсказка для некоторых может быть это ...

window.history.go(-2); 

особенно в связи с появлением всплывающего окна с ошибкой отказа.

0

Вы можете просто запрограммировать свою страницу, чтобы не отправлять ее, или что-то делать/перемещаться в другом месте, если window.referer - это страница Paypal, которую вы пытаетесь избежать второй раз.

Смежные вопросы