PHP - PHP despues de ejecutar el codigo regrese al HTML

   
Vista:

PHP despues de ejecutar el codigo regrese al HTML

Publicado por Luis (4 intervenciones) el 30/09/2009 05:25:56
Buenas noches,

Tengo una duda, tengo un formulario de registro elaborado en HTML que envia por metodo POST los datos a un PHP, todo me funciona bien, sin embargo cuando le doy click al boto del registro se ejecuta el PHP y me despliega el texto de Registro exitoso si se realizo el registro con exito (obvio) o si me dio un error por politica tambien lo realiza.

¿Como hago para que se regrese al fomulario de HTML despues de ejecutar todo el codigo de PHP?

Les agradezco su ayuda,

Luis
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:PHP despues de ejecutar el codigo regrese al HT

Publicado por Diego Romero (1450 intervenciones) el 30/09/2009 17:15:02
Pues lo ideal es con header() si es que no vas a mostrar HTML en el propio PHP, sino usando el tag HTML apropiado.

Con header sería.

header("Location: http://dominio.com/tuformulario.php");

Y con HTML sería:

<meta http-equiv="refresh" content="2;url=http://dominio.com/tuformulario.php">

Eso muestra la página por dos segundos y luego redirecciona.

Ah!, si quieres saber desde dónde llegó el usuario al script consulta la variable superglobal $_SERVER["HTTP_REFERER"], eso te ayudará a extraer la parte del dominio en la URL.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PHP despues de ejecutar el codigo regrese al HT

Publicado por Luis (4 intervenciones) el 30/09/2009 20:42:40
Gracias por tu ayuda Diego, lo que sucede es que yo tengo el formulario elaborado en HTML que hace referencia a una rutina en PHP que es la que verifica los campos que se han ingresado en HTML, todo funciona bien, cuando ingreso un nuevo usuario si todo cumple con las condiciones impuestas en el PHP va a la base de datos en MYSQL y graba el usuario y entonces me despliega en la pantalla "Registro Exitoso".

Lo que yo quiero es que me despues de desplegar el mensaje "Registro Existoso" el PHP me redireccione al formulario .HTML.

Intente con el header que me sugeriste sin embargo me sale un warning

header ("Location: http://localhost/formulario.html");

Warning: Cannot modify header information - headers already sent by (output started at /home/laldana1/home/laldana1/Public_html/registrar.php:50) in /home/laldana1/home/laldana1/Public_html/registrar.php on line 53

El formulario.html es el que manda por POST los datos a registrar.php

Si me puedes ayudar te lo agradecere.

Luis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PHP despues de ejecutar el codigo regrese al HT

Publicado por Luis (4 intervenciones) el 30/09/2009 23:23:36
Diego, gracias por tu ayuda he encontrado otra respuesta en otro foro, he utilizado el siguiente codigo

$fp=fopen("tu_pagina.html","r");
while (!feof($fp)) {
$buffer.=fgets($fp,4096);
}
fclose($fp);
echo $buffer;

De esta manera logre hacerlo funcionar.

Sin embargo aún no se porque no me funcionó el comando header ( )

Gracias

Luis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PHP despues de ejecutar el codigo regrese al HT

Publicado por Diego Romero (1450 intervenciones) el 30/09/2009 23:57:14
Déjame decirte que la solución que has copiado es de lo más chapucera que puede haber, lo que hace es leer el archivo HTML y luego mostrarlo al cliente, exactamente lo mismo que ya hace el servidor web sin necesidad de que PHP lo haga.

Lo que te ha ocurrido con la función header() te lo previne en el mensaje correspondiente. *No puedes enviar NADA al cliente antes de llamar a header()*.

<?php
echo "hola"; <--- Mal, estás enviando algo antes que header.
header("Location: http://localhost/formulario.html");
?>

<?php
header("Location: http://localhost/formulario.html");
echo "hola"; <--- Bien!, pero inútil porque header redirecciona el navegador inmediatamente por lo tanto el usuario no verá el mensaje.
?>

En tu caso podrías haber hecho algo como:
<?php
/*
Código para insertar en la DB
*/
header("Location: http://localhost/formulario.html");
?>

Pero como he dicho, header() redirecciona el navegador inmediatamente, pero tú quieres que el cliente vea el mensaje de que el registro se insertó (o no), entonces lo mejor es usar <meta>
<?php
/*
Código para insertar en la DB
*/
?>
<html>
<head>
<meta http-equiv="refresh" content="2;url=http://localhost/formulario.html">
</head>
<body>
<p align="center">El registro se insertó correctamente</p>
</body>
</html>

Eso hará que muestre el mensaje por dos segundo y luego vuelve al formulario.
Por supuesto esto está muy simplificado pero la idea se entiende ¿no?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PHP despues de ejecutar el codigo regrese al HT

Publicado por Carlos (2 intervenciones) el 04/10/2009 19:34:18
bueno y si digamos yo quisiera ver el mensaje... de exito o error.... en la pagina a la que redirecciono como se haria??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PHP despues de ejecutar el codigo regrese al HT

Publicado por Diego Romero (1450 intervenciones) el 04/10/2009 21:45:58
Pues te has decidido por usar header() con el cual redireccionas de regreso al formulario y allí quieres poner el mensaje de éxito o error. Tendrás que hacer uso de sesiones.

He escrito un artículo que te servirá para esto:
http://driverop.com.ar/recupdatos.php

En este artículo no explico la solución a tu problema específico (se trata de recuperar los datos que el usuario ya ingresó en caso de error para que no tenga que escribir todo de nuevo), pero con un poco de astucia podrás pasar, además de esos datos, unos cuantos mensajes apropiados ;).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar