solo recibir por formularios formulario enviar datos con codigo botones php forms post button back

php - recibir - Botón Atrás volver a enviar los datos del formulario($_POST)



formulario php (6)

Mi problema es que el botón Atrás hace que el navegador diga algo así como "Página caducada" cuando la página anterior fue creada por un formulario.

Ejemplo:

  • página1: formulario enviado con criterios de búsqueda (solicitud $ _POST, puntos de formulario a página2)
  • página2: recibe la solicitud $ _POST y muestra el resultado (lista de usuarios con enlaces, apunta a la página3)
  • página3: Mostrar perfil de usuario

Ahora, cuando el visitante haga clic en el botón Atrás en el navegador, mostrará algo así como "Página caducada".

En su lugar, la página anterior debe mostrarse sin advertencias (página 2, con la lista de usuarios)

¿Cómo son sus estrategias para evitar este comportamiento?


Envíe un encabezado de Location en la secuencia de comandos a la que realizó la publicación, señalando la página que viene después.


No use POST para búsqueda. La búsqueda se puede hacer de manera segura con GET ya que no modificará nada.


Si está enviando un para con los parámetros de búsqueda, está tratando de obtener algunos datos, no modificar algunos.

Por lo tanto, debe usar el método HTTP GET, y no POST: POST se debe usar cuando se tiene la intención de crear / modificar datos, y GET se debe usar cuando se intenta obtener algunos datos.


O bien, si tiene alguna operación de crear / modificar que deba hacerse:

  • El primer formulario POST para una primera página
    • Esa página realiza algunas operaciones (como escribir algo en una base de datos)
    • Y luego redirige a otra página, usando un encabezado HTTP de Location .
  • Es esa última página, es decir, las consultas del navegador mediante solicitudes GET, que muestran los datos obtenidos de los parámetros recibidos en la URL.

Vea la página Publicar / Redirigir / Obtener en wikipedia, acerca de esto.


Esto se aplica a PHP e IE8.

No solo debe configurar la caché en privado, sino que debe eliminar los 4 encabezados de caché y esto solo se puede hacer con PHP 5.3. En PHP 5.2, solo puede establecer los 4 encabezados en valores en blanco si usa el método setHeader () de Zend Framework. Por alguna razón, no es suficiente en IE8 para establecer los 4 valores de encabezado en valores vacíos. Aquí está el código para PHP 5.3:

header_remove("Expires"); header_remove("Cache-Control"); header_remove("Pragma"); header_remove("Last-Modified");



Puede usar la sesión para hacer esto.

p.ej.

$ _SESSION [''name''] = $ _POST [''name''];

Recuerde desconectar sus variables después de que se complete el proceso para optimizar el uso de la memoria.