Foros del Web » Programando para Internet » PHP »

Redirigir a una página después de rellenar un formulario

Estas en el tema de Redirigir a una página después de rellenar un formulario en el foro de PHP en Foros del Web. Hola, después de leer mil foros, os tengo que pedir ayuda. Tengo un formulario en Php que después de enviar el email aparece una pagina ...
  #1 (permalink)  
Antiguo 10/01/2013, 08:03
 
Fecha de Ingreso: enero-2013
Mensajes: 4
Antigüedad: 11 años, 3 meses
Puntos: 0
Redirigir a una página después de rellenar un formulario

Hola, después de leer mil foros, os tengo que pedir ayuda.

Tengo un formulario en Php que después de enviar el email aparece una pagina dando las gracias, hasta ese momento bien, pero luego no consigo que vuelva a la pagina de inicio. He probado con el comando header("Location: http://www.example.com/" al final del texto y nada, os dejo el html y el php a ver si alguien me puede ayudar y explicar porque no lo he conseguido. Muchas gracias por adelantado.
HTML
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<title>HTML5 Contact Form</title>
<link rel="stylesheet" media="screen" href="styles.css" >
<!--[if IE]>
<script src="http://html5shiv.googlecode.com/svn/trunk
/html5.js"></script>
<![endif]-->
</head>
<body>
<form class="contact_form" action="contacto.php" method="post">
<ul>
<li>
<h2>Contáctanos</h2>
</li>
<li>
<label for="name">Nombre:</label>
<input name="nombre" type="text" required id="nombre" placeholder="Escriba aqui su nombre" />
</li>
<li>
<label for="email">Email:</label>
<input type="email" name="email" placeholder="Su Email" required />
</li>
<li>
<label for="Empresa">Empresa:</label>
<input type="url" name="web" placeholder="Nombre de la empresa" required />
</li>
<li>
<label for="mensaje">Mensaje:</label>
<textarea name="mensaje" cols="40" rows="6" required id="mensaje" ></textarea>
</li>
<li>
<button class="submit" type="submit">Enviar</button>
</li>
</ul>
</form>
</body>
</html>

PHP
<?php
//Importamos las variables del formulario de contacto

@$nombre = addslashes($_POST['nombre']);
@$email = addslashes($_POST['email']);
@$web = addslashes($_POST['empresa']);
@$mensaje = addslashes($_POST['mensaje']);



//Preparamos el mensaje de contacto
$cabeceras = "From: $email\n" //La persona que envia el correo
. "Reply-To: $email\n";
$asunto = "Mensaje desde la pagina Web"; //asunto aparecera en la bandeja del servidor de correo
$email_to = "[email protected]"; //cambiar por tu email
$contenido = "$nombre ha enviado un mensaje desde la web \n"
. "\n"
. "Nombre: $nombre\n"
. "Email: $email\n"
. "Empresa: $web\n"
. "Mensaje: $mensaje\n"
. "\n";
//Enviamos el mensaje y comprobamos el resultado
if (@mail($email_to, $asunto ,$contenido ,$cabeceras )) {

//Si el mensaje se envía muestra una confirmación
die("Gracias, su mensaje se envio correctamente.");
header("Location: www.forsemer.com");
}else
{
//Si el mensaje no se envía muestra el mensaje de error
die("Error: Su información no pudo ser enviada, intente más tarde");
}
exit();
?>
  #2 (permalink)  
Antiguo 10/01/2013, 08:13
 
Fecha de Ingreso: noviembre-2012
Ubicación: Caracas - Venezuela
Mensajes: 116
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Redirigir a una página después de rellenar un formulario

estás empleando mal el header location

Si vas a ir a una página que NO es la tuya debe ser así

Código PHP:
header("Location: http://www.forsemer.com"); 
Si vas a una pagina de tu sistema debes poner dirección relativa ejemplo

Código PHP:
header("Location: principal.php"); 
Si quieres que tenga delay

Código PHP:
header"refresh:5;http://www.forsemer.com" ); 
ese 5 son en segundos
  #3 (permalink)  
Antiguo 10/01/2013, 09:11
 
Fecha de Ingreso: enero-2013
Mensajes: 4
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Redirigir a una página después de rellenar un formulario

Lo primero es dar las gracias por responder tan rápido.

He puesto la instrucción header( "refresh:5;http://www.forsemer.com" ); al final antes de exit pero no hace nada.

¿Me estoy equivocando de lugar? también lo he colocado después de mi email y tampoco hace nada.

Me podríais ayudar con esto.

Muchas gracias de nuevo
  #4 (permalink)  
Antiguo 10/01/2013, 09:21
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Redirigir a una página después de rellenar un formulario

hola


probe el codigo y funciono

Código PHP:
Ver original
  1. header( "refresh:5;http://www.forsemer.com" );

prueba solo con:

Código PHP:
Ver original
  1. header("Location: http://www.forsemer.com");
  #5 (permalink)  
Antiguo 10/01/2013, 09:29
 
Fecha de Ingreso: enero-2013
Mensajes: 4
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Redirigir a una página después de rellenar un formulario

Muchas gracias por responder pero tampoco me funciona no se si lo estoy colocando mal. pego el archivo a ver si me podéis decir que hago mal. muchas gracias

<?php
//Importamos las variables del formulario de contacto

@$nombre = addslashes($_POST['nombre']);
@$email = addslashes($_POST['email']);
@$web = addslashes($_POST['empresa']);
@$mensaje = addslashes($_POST['mensaje']);



//Preparamos el mensaje de contacto
$cabeceras = "From: $email\n" //La persona que envia el correo
. "Reply-To: $email\n";
$asunto = "Mensaje desde la pagina Web"; //asunto aparecera en la bandeja del servidor de correo
$email_to = "[email protected]"; //cambiar por tu email
$contenido = "$nombre ha enviado un mensaje desde la web \n"
. "\n"
. "Nombre: $nombre\n"
. "Email: $email\n"
. "Empresa: $web\n"
. "Mensaje: $mensaje\n"
. "\n";
//Enviamos el mensaje y comprobamos el resultado
if (@mail($email_to, $asunto ,$contenido ,$cabeceras )) {
//Si el mensaje se envía muestra una confirmación
die("Gracias, su mensaje se envio correctamente.");
header("Location: www.forsemer.com");
}else
{

//Si el mensaje no se envía muestra el mensaje de error
die("Error: Su información no pudo ser enviada, intente más tarde");
}
header("Location: http://www.forsemer.com");
exit();
?>
  #6 (permalink)  
Antiguo 10/01/2013, 09:33
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Redirigir a una página después de rellenar un formulario

hola

ok , sencillo nunca te va a funcionar porque le estas haciendo un die antes de redireccionar con lo cual el script php se detiene o muere, cambia la linea

Código PHP:
Ver original
  1. die("Gracias, su mensaje se envio correctamente.");
  2. header("Location: www.forsemer.com");

Por :

Código PHP:
Ver original
  1. header( "refresh:5;http://www.forsemer.com" );

La cuestion es que no puedes hacer un echo antes de un header, pues te generara error.
  #7 (permalink)  
Antiguo 10/01/2013, 09:36
 
Fecha de Ingreso: enero-2013
Mensajes: 4
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Redirigir a una página después de rellenar un formulario

Ya lo he conseguido, muchas gracias a todos por vuestra ayuda.
  #8 (permalink)  
Antiguo 10/01/2013, 09:38
 
Fecha de Ingreso: noviembre-2012
Ubicación: Caracas - Venezuela
Mensajes: 116
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Redirigir a una página después de rellenar un formulario

Cita:
Iniciado por jedal Ver Mensaje
Lo primero es dar las gracias por responder tan rápido.

He puesto la instrucción header( "refresh:5;http://www.forsemer.com" ); al final antes de exit pero no hace nada.

¿Me estoy equivocando de lugar? también lo he colocado después de mi email y tampoco hace nada.

Me podríais ayudar con esto.

Muchas gracias de nuevo
Yo pobré el código y funciona a la perfección, es posible que tengas un problema en el PHP verificando si el mail fue enviado o no pruebalo así:

Código PHP:
if (!$enviado=mail($email_to$asunto ,$contenido ,$cabeceras )) {
echo 
"Error al enviar el mensaje";
}

else {
echo 
"gracias por enviar su mensaje";
header"refresh:5;http://www.forsemer.com" ); 

  #9 (permalink)  
Antiguo 26/06/2013, 04:21
 
Fecha de Ingreso: junio-2013
Mensajes: 1
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Redirigir a una página después de rellenar un formulario

Hola Jedal me pdrias decir como lograste que funcionara por favor.
Estoy usando el mismo codigo para probar.
Saludos
  #10 (permalink)  
Antiguo 26/06/2013, 06:56
 
Fecha de Ingreso: julio-2010
Mensajes: 275
Antigüedad: 13 años, 9 meses
Puntos: 21
Respuesta: Redirigir a una página después de rellenar un formulario

Yo hago algo que no a muchos les gusta...
Escribir con PHP un código de javascript....

Código PHP:
Ver original
  1. echo "<script>alert('Formulario enviado'); location.href='inicio.php'</script>";
  #11 (permalink)  
Antiguo 26/06/2013, 07:00
 
Fecha de Ingreso: junio-2013
Ubicación: Union Hidalgo, Oaxaca
Mensajes: 1
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Redirigir a una página después de rellenar un formulario

Exacto, es algo mas largo pero funciona, y así nos evitamos de problemas.

Etiquetas: formulario, html, página, redirigir, rellenar, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:18.