Pregunta:
Fecha: 24-01-2015 21:03:31
(En Español)
Soy nuevo en esto del PhP.
Lo mio es mas el diseño en HTML y CSS por lo que ahora que empiezo a programar en este lenguaje me asaltan un montón de dudas. Muchas las resuelvo buscado por ahí pero hay algunas, como esta, que se me atragantan un poco.
Os pego una captura del código después de mi pregunta ya que me salta este error al pegar código aquí.
He hecho unos formularios para listar, añadir, editar y borrar datos en una base de datos MySql (ayudado de Dreamweaver todo sea dicho :p) y no consigo hacer que cuando envío el formulario me redirija a la página desde la que vengo, solo consigo que me redirija a una página específica.

Espero que me podáis ayudar :) Votos: 2 - Respuestas: 6 - Vistas: 20 Compartir en: Google Facebook Twitter LinkedIn Link
Problema al redirigir a página anterior[Resuelta]
Hola chicos!Soy nuevo en esto del PhP.
Lo mio es mas el diseño en HTML y CSS por lo que ahora que empiezo a programar en este lenguaje me asaltan un montón de dudas. Muchas las resuelvo buscado por ahí pero hay algunas, como esta, que se me atragantan un poco.
Os pego una captura del código después de mi pregunta ya que me salta este error al pegar código aquí.
He hecho unos formularios para listar, añadir, editar y borrar datos en una base de datos MySql (ayudado de Dreamweaver todo sea dicho :p) y no consigo hacer que cuando envío el formulario me redirija a la página desde la que vengo, solo consigo que me redirija a una página específica.

Espero que me podáis ayudar :) Votos: 2 - Respuestas: 6 - Vistas: 20 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 25-01-2015 06:13:24 Tu código se ve bien pero no está completo y pareciera que es comportamiento del header Location pues si envías algo antes de la redirección esta no va a funcionar. Si puedes poner el código completo desde la primer línea te lo podría confirmar.
Respecto al HTTP_REFERER, el valor que guarda -si es que está disponible y no ha sido manipulado- es la dirección de la liga que te envió a donde te encuentres. En el caso de un formulario que se acaba de enviar datos a sí mismo la dirección será siempre la del formulario.
En conclusión, compártenos un poco más de tu código para poder ayudarte mejor Votos: 0 - Link respuesta -
Fecha: 25-01-2015 06:25:17 hola.. aparentemente todo esta bien, ya probaste
haciendo
para sacar la pagina de donde vengo
$refer = $_SERVER['HTTP_REFERER'];
echo $refer;
header("Location: $refer");
tambien abria que checar si la pagina hacia donde te regresas no estará esperando algún parametro Votos: 0 - Link respuesta -
Fecha: 25-01-2015 10:10:28 Porba con javascript
<SCRIPT LANGUAGE=javascript> window.history.go(-1) </SCRIPT>
aunque es mucho mejor hacerlo con php, ya que el usuario puede desactivar el javascript y no causaria el efecto esperado
Lo mas acertado es hacer lo que te propone Jesus ;)
Votos: 1 - Link respuesta -
Fecha: 25-01-2015 15:11:45 Hola, buena noche. Entiendo claramente tu pregunta. En realidad, querés volver a la página anterior, tal como si pulsaras "Atrás" en el navegador.
Primero que todo, hay que entender que PHP es un lenguaje de programación que se ejecuta en el servidor, no en el cliente o navegador.
El servidor es la plataforma o -llamémosle vulgarmente- la página web que estás visitando.
Esto quiere decir que existe un proceso previo antes de mostrar la salida al usuario...
El script PHP es ejecutado por el servidor, y éste compila ese script y produce una salida de código fuente y la envía al cliente (la persona que visita la página web).
Normalmente el cliente accede a través de un navegador web que traduce ese código fuente a una interfaz gráfica. Si has trabajado en HTML, sabrás que <a></a> es un enlace, <img/> es una imagen, etc.
En pocas palabras, el lenguaje de programación PHP está instalado en el servidor donde entrás, con la versión PHP que eligió esa persona (me refiero al dueño del servidor).
Los lenguajes del navegador están instalados en la computadora del cliente (vos), por este motivo si entras a una página usando Windows95 por ejemplo, es probable que no puedas ver contenido flash y muchas cosas nuevas que han sido agregadas los últimos años.
Esto es porque los lenguajes de programación del navegador dependen de la versión instalada en tu máquina.
[CONCLUSIÓN]
No podés volver a la página anterior usando PHP, porque PHP se ejecuta en el servidor donde está instalado y dicho servidor no tiene acceso al navegador.
Ni el navegador tiene acceso al servidor ni vice-versa.
[POST DATA]
En PHP existe la variable $_SERVER['HTTP_REFERER'] pero dicha variable depende del navegador y la mayoria de los navegadores dan al usuario la posibilidad de ocultar esta información.
Otro detalle, suponete que yo como cliente ejecuto tu script en una nueva ventana/pestaña: No hay manera de saber cual fue la página anterior.
Lo que pedís se puede hacer con javascript porque trabaja con el navegador.
Espero no haberme ido mucho por las ramas. Te expliqué todo esto porque veo que sos nuevo en PHP.
Saludos! Votos: 1 - Link respuesta -
Fecha: 25-01-2015 17:26:10 El código de Jesús tiene un error. Llama a la cabecera luego de de haber realizado una salida de texto con ECHO. Igualmente, el REFERER se puede ocultar en Firefox y Opera. Algunos navegadores móviles tambien dan la posibilidad de ocultar el Referer, otros navegadores directamente ni lo envían.
No es muy confiable pero por esas casualidades puede resultar... no lo recomiendo. Votos: 2 - Link respuesta -
Fecha: 26-01-2015 04:03:47 Hola Jaume, antes de comenzar a responder tu pregunta te comento que el inconveniente que no te permitía publicar el código en texto ya esta solucionado, te pido por favor que edites tu pregunta y que remplaces la imagen por el código correspondiente, muchas gracias y disculpa las molestias.
Volviendo a tu consulta:
Entiendo que lo que estas haciendo es completar un formulario con información (ya sea en estado de edición o carga de nuevos datos) y al enviar el formulario hacia un script procesar_form.php (que puede ser el mismo script donde se encuentra el formularo u otro, esto se configura en el atributo "action" del formulario) queres que al finalizar el script de proceso del formulario se redireccione al usuario hacia la página desde donde vino (o sea, que vuelva al formulario donde estaba haciendo la edición o creación del nuevo registro).
Te cuento que estas bien encaminado con la utilización del:
header("Location: ".$_SERVER['HTTP_REFERER']);
pero seguramente el problemas que estas teniendo tiene que ver con que pusiste el array $_SERVER en minúsculas (es lo que veo en la imagen que agregaste), y si lo pones en minuscula te va a dar un mensaje como este "Notice: Undefined variable: _server" y no podrás obtener el referer.... habiendo dicho esto, cambia el nombre a mayusculas y prueba nuevamente.
Algunas consideraciones importantes:
Antes de utilizar la función header() siempre debes verificar que no se halla enviado algun otro header, ya que sino la función header fallará. El envíar un caracter html, por medio de un echo, print, o cualquier otra función que imprima en el buffer de PHP y/o dejar un espacio en blando fuera de las etiquetas PHP envía un header html (no necesariamente un header se envía por medio de la función header()). Si fue enviado o no se puede verificar por medio de la función "headers_sent()", la cual comprueba si se ha enviado alguna cabecera/header y devuelve true en caso de exito.
Otro tema importante a considerar es que luego de un "header('Locacion: algun_script.php');" el script php se sigue ejecutando, por lo que debemos garantizar que eso no suceda por medio de la función "exit()" a continuación de la llamada a la función "header()".
Y por último, si el header ya fue enviado e igual queremos hacer una redirección, lo podemos hacer por medio de javascript con la directiva "window.location=algun_script.php".
Veamos un ejemplo de una función de redirect al referer que se encarga de hacer todo lo dicho:
/** * Función redirect to referer * By Fernando Mosquera - PHPCentral.com */ function redirectToReferer() { $destino = $_SERVER['HTTP_REFERER']; //verifico si el destino fue seteado correctamente if (empty($destino)) { //<-- aquí se podría mejorar controlando además si el destino es o no valido. //si no se encontro un referer, indico destion por defecto al index.php $destino = 'index.php'; } //verifico si ya fue enviado algun header: if (!headers_sent()) { //si no fue enviado un header, hago un redirect con PHP header('Location: ' . $destino); exit; } else { //si ya fue enviado un header, hago un redirect con Javascript echo '<script type="text/javascript">window.location="' . $destino . '";</script>'; exit; } }
Espero que mi respuesta te sea de ayuda, saludos y buen código. Votos: 3 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
