Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/06/2008, 13:36
rvelezb
 
Fecha de Ingreso: julio-2003
Ubicación: Sevilla
Mensajes: 81
Antigüedad: 20 años, 9 meses
Puntos: 1
Exclamación Formulario que no se envía

Hola, a ver si me podéis ayudar porque por muchas vueltas que le doy no sé donde está el fallo.

Tengo un formulario en una página web, en la que el contenido se envía a una dirección de correo mediante PHP, concretamente uso la función mail(), y después de enviarse, dependiendo se si se envía bien o si hubo algún error durante el proceso, te debe de redirigir a una página donde te da las gracias, si todo ha ido bien, o a una donde te dice que ha habido un error, pero el problema está en que ni envía el formulario, ni tampoco redirige a ninguna página, hace como que lo envía, y después se vuelve a cargar de nuevo la página con el formulario, por lo que la persona que rellena el formulario piensa que se ha enviado bien, pero no es así.

Pongo aquí el código, no entero, ya que es un formulario muy largo, y tiene tablas por medio, y serían muchas líneas de código, y el problema no está en el HTML, sino en el PHP, a ver si alguien detecta qué está mal:


Código PHP:
<?php
if (!$HTTP_POST_VARS) { // con esto compruebo al principio no hay nada en la variable $HTTP_POST_VARS, y muestro el formulario
?> <!-- el if se cierra al final -->
Código HTML:
<form method="POST" name="Reservas" action="reservas.php">
<!-- contenido del formulario -->
<input type="submit" value="ENVIAR" name="B1" style="font-size: 12pt">
<input type="reset" value="BORRAR" name="B2" style="font-size: 12pt">
</form> 

Código PHP:
<?php

} else { // cierro la llave del 'if' anterior y abro la del 'else'
// en caso de que en la variable '$HTTP_POST_VARS' haya algo, significa que se ha enviado el formulario

// Recibo el formulario y compongo el cuerpo del mensaje que voy a enviar
$cuerpo "<h1>Reserva de Mesa</h1>";
$cuerpo .= "Fecha de reserva: " $HTTP_POST_VARS["Dia"] . " de " $HTTP_POST_VARS["Mes"] . " a las " $HTTP_POST_VARS["Hora"] . "<br>";

$cuerpo .= "Número de comensales: " $HTTP_POST_VARS["Comensales"] . "<br>";

// y así con todos y cada uno de los campos del formulario

// para que se envíe en formato HTML
$headers "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

// dirección del remitente, la cogemos del campo del formulario al respecto
$headers .= "From: " $HTTP_POST_VARS["Email"] . "\r\n";

//ruta del mensaje desde origen a destino
$headers .= "Return-path: " $HTTP_POST_VARS["Email"] . "\r\n"

// mando el correo...
if (mail("email_destino","Reserva de Mesa",$cuerpo,$headers)) {

// Redirijo a la página de formulario recibido, si el valor del if es que sí 
header("location:http://www.miserver.com/enviado.htm");
}else{

// En caso contrario, redirijo a la página de formulario enviado erróneamente
header("location:http://www.miserver.com/error.htm");
}
// cierro el 'else' de la función mail()
}// cierro el 'else' del principio del script, en el que comprobaba el contenido de la variable $HTTP_POST_VARS
?>
De todos modos, si veis que esto ésta bien y necesitáis el código entero, no tengo ningún inconveniente en transcribirlo entero, pero creo que no es necesario.


Muchas gracias de antemano.