2008-11-14 9 views
15

Tengo una página ASP.Net que contiene un botón. Esta página contiene un botón ServerSide de Paypal.¿Cómo elimino una página del historial del navegador?

Cuando empujó mi servidor realiza varias funciones inteligentes en la parte final y luego vuelve a escribir la respuesta como una forma y un poco de javascript qué puestos esta forma a paypal ..

Todo esto funciona muy bien.

Sin embargo, si el usuario opta por hacer clic atrás, llegarán a mi formulario de publicación automática generado y esto los reenviará nuevamente a Paypal.

Pensé que si podía encontrar la forma de que mi página de formulario generada no existiera en el historial, entonces esto resolvería mi problema. pero no tengo idea de cómo corregir esto.

¿Cómo puedo eliminar mi página del historial o simplemente hacer que nunca aparezca?

Actualización: Gracias a todos ... Esas son algunas de las mejores respuestas. Subió todos los buenos, pero se fue con splattne a causa del uso inteligente del campo oculto en lugar de cookies para la decisión.

Respuesta

6

No estoy seguro si eso se puede hacer. Pero aquí hay una idea de cómo podría evitar que vuelva a enviar el formulario.

Puede insertar una entrada oculta en su formulario que al principio estaría vacío. En el envío, escribirá un valor en ese campo y se asegurará de verificar cada intento de envío si este campo está vacío.

Si no está vacío al enviarlo, sabrá que el formulario se envió anteriormente y podría advertir al usuario.

+0

Genial ... en realidad creo que si descubro que este valor ya está completo, entonces simplemente ejecutaré otro de nuevo :) –

5

Como aplicación web, nunca tendrá el control total del navegador del usuario. Incluso si hubiera una manera de ordenarle al navegador que no almacene la página en la historia, lo cual dudo, no puede estar seguro de que funcionará. Por ejemplo, un usuario inteligente podría modificar un navegador de código abierto para almacenar cada página en la historia, sin importar qué.

Creo que deberías tratar de abordar el problema desde otro ángulo. Podría, por ejemplo, detectar que es la misma forma que se reenvía y no enviarla a PayPal la segunda vez. Lo importante es hacerlo desde el servidor.

+0

Cuando el usuario regresa de la página de paypal, el navegador recupera el formulario generado de su caché y se vuelve a publicar correctamente. No hay más contactos con el servidor. Entonces no veo cómo puedo usar el servidor para evitar esto. –

+0

¿Está sugiriendo que podría hacer que la forma autogenerada tenga alguna lógica condicional que publique o ejecute otra copia de respaldo()? ¿En qué lógica podría basar esto? –

+0

¿Qué puedo decir ... splattne respondió esa pregunta segundos después de que lo pregunté :) –

2

Quizás podría establecer una cookie antes de enviar el formulario.

Cuando se carga la página, verifique la existencia de esa cookie (lo que significa que el formulario ya se envió). Si se encuentra, en lugar de enviar automáticamente el formulario, vuelve automáticamente (window.history.back()) nuevamente.

19
window.location.replace(URL); 

window.location:

replace (url)

sustituir el documento actual con el uno en la URL proporcionada. La diferencia a partir del método de asignación() es que después de usar sustituir la actual página no se guardará() en el historial de la sesión , lo que significa que el usuario no será capaz de utilizar el botón Atrás para navegar hacia él.

+1

No creo que funcione, ya que estoy obligado a publicar la página actual para transmitir los datos necesarios para PayPal. Por lo tanto, tengo algunos js -> "document.getElementById ('form1'). Submit();" que no puedo reemplazar con tu sugerencia de "reemplazar" –

+0

Lamentablemente, eso no funciona en Spotify. – schlingel

+0

Esto puede no haber encajado en lo que el OP estaba buscando, pero realmente me ayudó con otro problema. ¡Gracias! – Danation

2

no estoy seguro de si se puede hacer esto fácilmente con la integración de PayPal, pero el patrón "Post/Redirect/Get" se puede utilizar para hacer frente a este problema

0

Una indirecta útil para algunos puede ser esto ...

window.history.go(-2); 

particularmente en el advenimiento de un mensaje emergente de advertencia de falla de carga.

0

Simplemente puede programar su página para no enviarla, o hacer algo/navegar en otro lugar, si window.referer es la página de Paypal que está tratando de evitar invocar por segunda vez.

Cuestiones relacionadas