[SOLUCIONADO] Redireccionar en PHP

Iniciado por Only, Octubre 20, 2012, 05:26:08 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Octubre 20, 2012, 05:26:08 PM Ultima modificación: Marzo 22, 2014, 02:03:42 PM por Expermicid
buenas tardes a todos , quiero hacer una redireccion en php pero no se como se hace espero que me puedan ayudar

Código: php
<?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()

Código: php
header("Location: http://host.com/index.php");


Por lo tanto tu script quedaria de la siguiente  forma:

Código: php
<?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");
            }
            ?>


Web: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Twitter: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Hola, Lo puedes hacer como dice Q3rv0 o puedes usar html..
Seria asi
Código: php
<?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'>";
                                       
            }
            ?>
Underc0de Manager!

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:

Código: php

<?php
echo '<script>window.location="URL";</script>';
?>


Sino, usar los META como te indicó Okol.

Saludos.
Cada vez que me das Karma me motivas

No tienes permitido ver los links. Registrarse o Entrar a mi 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:

Código: php

<?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 los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi 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:

Código: php

<?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:

Código: php
<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:

Código: php
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 los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi 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:

Código: php

<?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:

Código: php

<?php
echo '<script>setTimeout(function(){
window.location="URL";
}, 3000);</script>';


Sino, usa sleep que es el que te comentó Alexander.
Cada vez que me das Karma me motivas

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.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.