Volver a la página anterior con encabezado ("Ubicación:"); en PHP
124
El título de esta pregunta explica mi pregunta. ¿Cómo redirijo al visitante de la página PHP a su página anterior con elheader( "Location: URL of previous page" );
Tenga en cuenta que esto puede no funcionar con páginas seguras (HTTPS) y es una idea bastante mala en general, ya que el encabezado puede ser secuestrado, enviando al usuario a otro destino. El encabezado ni siquiera puede ser enviado por el navegador.
Idealmente, querrá:
Agregue la dirección de retorno a la solicitud como una variable de consulta (por ejemplo,? Back = / list)
Defina una página de retorno en su código (es decir, todos los envíos de formularios exitosos redirigen a la página de listado)
Proporcione al usuario la opción de a dónde quiere ir a continuación (por ejemplo, Guardar y continuar editando o simplemente Guardar)
@Col para que puedas probar un problema práctico con esto?
Pekka
1
Usar el árbitro, después de probar previamente si está configurado y es válido, en un contexto definido de página a página puede ser una práctica perfectamente aceptable: la gran mayoría de los navegadores envía un HTTP_REFERER adecuado.
Pekka
1
@Col. Utilicé esto en producción cuando tuve que hacer algo para una demostración. Como puede ver en mi respuesta, proporciono otras tres soluciones a las que recurriría en lugar de la redirección basada en HTTP_REFERER.
Dimitry
2
@Madmartigan que suena como un comportamiento realmente extraño, la única pista que puedo ver en la red es que hay algunos problemas de redireccionamiento. De todos modos, estoy de acuerdo en que usar el árbitro no es el camino si necesitas 100% de seguridad
Esto sonaba muy inteligente, pero en FF10 entiendo. "Corrupted Content Error The page you are trying to view cannot be shown because an error in the data transmission was detected."Esto es básicamente inutilizable.
Wesley Murch
Wesley Murch, funciona bien para mí en casi todos los principales navegadores, incluido el que has mencionado. Solo funciona para ti en caso de que llegues a la página con algo en la historia.
Hammad
55
Esto puede hacer que la página anterior se sirva desde la memoria caché del navegador.
aksu
14
Tienes que guardar esa ubicación de alguna manera.
Digamos que es un formulario POST, simplemente coloque la ubicación actual en un campo oculto y luego úselo en la header()Ubicación.
Solo una pequeña adición: creo que es algo común y conocido agregar exit;después de la función de encabezado en caso de que no queramos que el resto del código se cargue o ejecute ...
Almacenar la URL anterior en una variable de sesión es malo, porque el usuario puede hacer clic derecho en varias páginas y luego volver y guardar.
a menos que guarde la URL anterior en la variable de sesión en un campo oculto en el formulario y después de guardar el encabezado ("Ubicación: guardar URL de la página de llamada");
Respuestas:
tratar:
Tenga en cuenta que esto puede no funcionar con páginas seguras (HTTPS) y es una idea bastante mala en general, ya que el encabezado puede ser secuestrado, enviando al usuario a otro destino. El encabezado ni siquiera puede ser enviado por el navegador.
Idealmente, querrá:
fuente
Es tan simple, solo usa esto
Esta trabajando bien para mi
fuente
"Corrupted Content Error The page you are trying to view cannot be shown because an error in the data transmission was detected."
Esto es básicamente inutilizable.Tienes que guardar esa ubicación de alguna manera.
Digamos que es un formulario POST, simplemente coloque la ubicación actual en un campo oculto y luego úselo en la
header()
Ubicación.fuente
Solo una pequeña adición: creo que es algo común y conocido agregar
exit;
después de la función de encabezado en caso de que no queramos que el resto del código se cargue o ejecute ...fuente
Solo intenta esto en Javascript:
O puedes probarlo en PHP:
fuente
Almacenar la URL anterior en una variable de sesión es malo, porque el usuario puede hacer clic derecho en varias páginas y luego volver y guardar.
a menos que guarde la URL anterior en la variable de sesión en un campo oculto en el formulario y después de guardar el encabezado ("Ubicación: guardar URL de la página de llamada");
fuente