Formulario que redirige a dos páginas

Estoy realizando mi primer formulario. Tengo cierta idea de php, pero no soy programadora... Lo último que he querido hacer no me ha funcionado. Lo que quiero es simplemente que si el campo email o el campo de los comentarios -data- no están rellenados lleve a una página de error que ya está hecha..., y, sino, que redirija a la página de confirmación de envío. Solo me lleva a la página de error. ¿Dónde puede estar el fallo? El código es
: <? If ( ($email == "") || ($data == "")) { header("Location: salida-error.html"); exit; }
$from = $_POST['email']; $subject = 'subject'; $message = 'From: ' . $_POST['name'] . "\n". 'Mensaje:' . $_POST['data']; $headers = "From: ". $from . "\n"; mail ('[email protected]', $subject, $message, $headers); header('Location: salida-envio.html'); ?> Gracias por tu atención.

3 respuestas

Respuesta
1

Estimada, tu código tiene el siguiente problema:

Para redireccionar a la pagina de error estas preguntando si las variables $email o $data son iguales a "" y eso siempre es verdadero en tu código para solucionarlo debes reemplazar esas variables por $_POST['email'] y $_POST['data'].

A continuación pongo el código corregido:

¿
<? 
if (($_POST['email'] == "") || ($_POST['data'] == "")) {
    header("Location: salida-error.html"); 
     exit;
}
$from = $_POST['email']; 
 $subject = 'subject'; 
 $message = 'From: ' . $_POST['name'] . "\n". 'Mensaje:' . $_POST['data']; 
 $headers = "From: ". $from . "\n"; 
 mail ('[email protected]', $subject, $message, $headers); 
 header('Location: salida-envio.html'); 
?>

Comentame si mi ayuda te sirvió.

Respuesta
1

Bueno antes que nada te recomiendo que no utilices las funciones header debido a que desde la versión 5 de php estas son obsoletas, hay otras formas de realizar la validación sin la necesidad de un php.

El error que muestras en tu script es que en la parte if ( ($email == "") || ($data == "")) { header("Location: salida-error.html"); exit; } la variable "$email" y la variable "$data" aun no han sido recibidas por POST te paso el script de corrección:

<?

$email=$_POST['email'];

$data=$_POST['data'];

if ( ($email == "") || ($data == "")) { header("Location: salida-error.html"); exit; }
$from = $_POST['email']; $subject = 'subject'; $message = 'From: ' . $_POST['name'] . "\n". 'Mensaje:' . $_POST['data']; $headers = "From: ". $from . "\n"; mail ('[email protected]', $subject, $message, $headers); header('Location: salida-envío.html');

¿

?>

Con esto debería ya funcionar de manera correcta, de igual forma me pongo a tu disposición para cualquier otra duda te paso mis datos

Mail : [email protected]

facebook: http://www.facebook.com/jesus.c.gonzalez1


Muchas gracias, ya me funciona, por fin acabé mi página, cuando la tengo subida y me dé de alta en facebook, te agrego, porque, quién sabe, siempre nos podemos echar una mano.

Un diez, majo

Mónica

Respuesta
1

Fijate que estas coparando $email cuando en realidad, según tu código, debería ser $_POST[email] y $_POST[data]

Para asegurarte de como están siendo posteados los datos, podes usar

if($_POST) {

print_r($_POST);

exit;

}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas