Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: Only en Octubre 20, 2012, 05:26:08 PM

Título: [SOLUCIONADO] Redireccionar en PHP
Publicado por: Only en Octubre 20, 2012, 05:26:08 PM
buenas tardes a todos , quiero hacer una redireccion en php pero no se como se hace espero que me puedan ayudar

Código (php) [Seleccionar]
<?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]
}
?>
 
Título: Re:[Ayuda]Redireccionar en PHP
Publicado por: q3rv0 en Octubre 20, 2012, 06:31:27 PM
Podes usar la funcion header()

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

Por lo tanto tu script quedaria de la siguiente  forma:

Código (php) [Seleccionar]
<?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");
            }
            
?>


Título: Re:[Ayuda]Redireccionar en PHP
Publicado por: Okol en Octubre 20, 2012, 09:06:44 PM
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'>";
                                        
            }
            
?>
Título: Re:[Ayuda]Redireccionar en PHP
Publicado por: Xt3mP en Octubre 20, 2012, 09:55:27 PM
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) [Seleccionar]

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



Sino, usar los META como te indicó Okol.

Saludos.
Título: Re:[Ayuda]Redireccionar en PHP
Publicado por: Only en Octubre 21, 2012, 04:38:18 PM
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:

Código (php) [Seleccionar]

<?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
Título: Re:[Ayuda]Redireccionar en PHP
Publicado por: Alex en Octubre 21, 2012, 04:56:22 PM
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:

Código (php) [Seleccionar]

<?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!
Título: Re:[Ayuda]Redireccionar en PHP
Publicado por: Xt3mP en Octubre 21, 2012, 07:08:11 PM
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:

Código (php) [Seleccionar]

<?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) [Seleccionar]

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


Sino, usa sleep que es el que te comentó Alexander.
Título: Re:[Ayuda]Redireccionar en PHP
Publicado por: ~ Yoya ~ en Octubre 21, 2012, 10:05:39 PM
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.