buenas tardes a todos , quiero hacer una redireccion en php pero no se como se hace espero que me puedan ayudar
<?php
//Recibo las variables de formulario
$nombre = $_POST['nombre'];
$mail = $_POST['email'];
$mensaje = $_POST['mensaje'];
//Te muestro las variables
echo "<h3>El mensaje que has enviado es: </h3>";
echo "<br />";
echo "<p>Nombre: ";
echo "<br />";
echo $nombre;
echo "<br />";
echo "Email: ";
echo "<br />";
echo $mail;
echo "<br />";
echo "Mensaje: ";
echo "<br />";
echo $mensaje;
echo "</p>";
//Envio un email
$aquien ="[email protected]";
$asunto = "Has recibido un correo de Only Labs";
$mensajemail = $nombre." con el email: ".$mail." te ha enviado un mensaje: ";
if(mail($aquien,$asunto,$mensaje,$mensajemail))
{
echo "Tu email se envio correctamente, en breve te respodneremos. Gracias";
[color=red]SI ES CORRECTO QUE ME MANDE AL INDEX[/color]
}
else
{
echo "El envio del mail ha fallado, intentalo otra vez";
[color=red]SI NO ES CORRECTO QUE ME MANDE AL FORMULARIO OTRA VEZ[/color]
}
?>
Podes usar la funcion header()
header("Location: http://host.com/index.php");
Por lo tanto tu script quedaria de la siguiente forma:
<?php
//Recibo las variables de formulario
$nombre = $_POST['nombre'];
$mail = $_POST['email'];
$mensaje = $_POST['mensaje'];
//Te muestro las variables
echo "<h3>El mensaje que has enviado es: </h3>";
echo "<br />";
echo "<p>Nombre: ";
echo "<br />";
echo $nombre;
echo "<br />";
echo "Email: ";
echo "<br />";
echo $mail;
echo "<br />";
echo "Mensaje: ";
echo "<br />";
echo $mensaje;
echo "</p>";
//Envio un email
$aquien ="[email protected]";
$asunto = "Has recibido un correo de Only Labs";
$mensajemail = $nombre." con el email: ".$mail." te ha enviado un mensaje: ";
if(mail($aquien,$asunto,$mensaje,$mensajemail))
{
echo "Tu email se envio correctamente, en breve te respodneremos. Gracias";
sleep(2);
header("Location: http://host.com/index.php");
}
else
{
echo "El envio del mail ha fallado, intentalo otra vez";
sleep(2);
header("Location: http://host.com/formulario.php");
}
?>
Hola, Lo puedes hacer como dice Q3rv0 o puedes usar html..
Seria asi
<?php
//Recibo las variables de formulario
$nombre = $_POST['nombre'];
$mail = $_POST['email'];
$mensaje = $_POST['mensaje'];
//Te muestro las variables
echo "<h3>El mensaje que has enviado es: </h3>";
echo "<br />";
echo "<p>Nombre: ";
echo "<br />";
echo $nombre;
echo "<br />";
echo "Email: ";
echo "<br />";
echo $mail;
echo "<br />";
echo "Mensaje: ";
echo "<br />";
echo $mensaje;
echo "</p>";
//Envio un email
$aquien ="[email protected]";
$asunto = "Has recibido un correo de Only Labs";
$mensajemail = $nombre." con el email: ".$mail." te ha enviado un mensaje: ";
if(mail($aquien,$asunto,$mensaje,$mensajemail))
{
echo "Tu email se envio correctamente, en breve te respodneremos. Gracias</script><META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>";
}
else
{
echo "El envio del mail ha fallado, intentalo otra vez</script><META HTTP-EQUIV='Refresh' CONTENT='0; URL=formulario.php'>";
}
?>
Mostrar texto antes de una cabacera puede generar error, en tu caso te recomendaría javascript aunque algunos salten a decir que el usuario puede tenerlo desactivado:
<?php
echo '<script>window.location="URL";</script>';
?>
Sino, usar los META como te indicó Okol.
Saludos.
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
Mostrar texto antes de una cabacera puede generar error, en tu caso te recomendaría javascript aunque algunos salten a decir que el usuario puede tenerlo desactivado:
<?php
echo '<script>window.location="URL";</script>';
?>
Sino, usar los META como te indicó Okol.
Saludos.
al final utilize este metodo pero , habra alguna forma de pausar por unos 3 seg la pagina donde informa que si se envio el correo?
gracias a todos
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
Mostrar texto antes de una cabacera puede generar error, en tu caso te recomendaría javascript aunque algunos salten a decir que el usuario puede tenerlo desactivado:
<?php
echo '<script>window.location="URL";</script>';
?>
Sino, usar los META como te indicó Okol.
Saludos.
al final utilize este metodo pero , habra alguna forma de pausar por unos 3 seg la pagina donde informa que si se envio el correo?
gracias a todos
las 3 técnicas son válidas, por javascript, por html o por una cabecera.
en html puedes poner así los 3 segundos:
<META HTTP-EQUIV='Refresh' CONTENT='3; URL=index.php'>
si revisas cambié el 0 por el 3.
si lo quieres hacer solo con php puedes:
ob_start(); //para que no tire los errores de cabecera
echo 'espere algunos segundos';
flush(); // enviamos al cliente el mensaje
sleep(3000); // si no me equivoco trabaja con milisegundos
header('Location: ubicacion');
este ultimo codigo, realmente no probé si funciona, pero tengo entendido que por ejemplo tiene problemas el flush con win32, o si trabajas php como cgi algunos modulos de apache pueden dar problemas.
pero es interesante como funciona el flush, ob_start, ob_clear, etc.
te recomiendo de todos modos o la de html o la de js.
saludos!
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
Mostrar texto antes de una cabacera puede generar error, en tu caso te recomendaría javascript aunque algunos salten a decir que el usuario puede tenerlo desactivado:
<?php
echo '<script>window.location="URL";</script>';
?>
Sino, usar los META como te indicó Okol.
Saludos.
al final utilize este metodo pero , habra alguna forma de pausar por unos 3 seg la pagina donde informa que si se envio el correo?
gracias a todos
Usa:
<?php
echo '<script>setTimeout(function(){
window.location="URL";
}, 3000);</script>';
Sino, usa sleep que es el que te comentó Alexander.
Te recomiendo que ocupes la opción del HTML, ya que en este caso usar sleep no es nada recomendable en este caso. Ya que si ocupas un sleep en un script PHP, este se queda en espera durante los segundo que se indiquen y por lo tanto esta ocupando memoria del servidor durante ese tiempo, y si tienes muchas visitas te estarás haciendo un auto DoS
Saludos.