Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/05/2008, 10:51
Astonmartin
 
Fecha de Ingreso: abril-2008
Ubicación: Variable
Mensajes: 23
Antigüedad: 16 años, 1 mes
Puntos: 0
Redireccionar página despues de abrir formulario

Hola.

Estoy ensayando un formulario a través de buzón de correo pero pretendo que tenga filtro. En este ensayo el filtro detecta campos vacíos pero puede servir para filtrar muchas cosas.

Para ello, en caso de campo vacío redirecciono la página a otra llamada error que advierte al usuario que debe llenar todos los campos y le proporciona un link para volver a "contacto", la página del formulario.

Sin embargo, cuando llamo al formulario aparece un mensaje en que viene a decir que si ya he comenzado a enviar datos al presionar el botón "Enviar" no puedo modificar la página a la que los envío:

Warning: Cannot modify header information - headers already sent by (output started ... etc. ...

que traducido significa:

Advertencia: No puede modificar la información de header - headers ya enviados por (la salida comenzada...

El caso es que el scrip lo he sacado de un tutorial y debería funcionar.

Está claro que el problema está en el redireccionamiento header( 'Location: error.php' );
pues cualquier otra instrucción funciona, pero no filtra.

Os mando el código a ver qué opinais:


<form action="contacto.php" method="post" id="contacto">
<label for="nombre">Nombre</label><br />
<input id="nombre" type="text" name="nombre" value="" /><br /><br />
<label for="email">Email</label><br />
<input id="email" type="text" name="email" value="" /><br /><br />
<label for="textarea_mensaje">Mensaje</label><br />
<textarea id="textarea_mensaje" name="mensaje" rows="5" cols="50"></textarea><br /><br />
<input type="submit" name="submit" value="Enviar " />
</form>

<?
// 1- Señalar error si hay campos vacíos

if ( !empty($_POST['nombre']) ) $nombre = $_POST['nombre']; else $error = true;
if ( !empty($_POST['email']) ) $email = $_POST['email']; else $error = true;
if ( !empty($_POST['mensaje']) ) $mensaje = $_POST['mensaje']; else $error = true;

// 2- Si se ha señalado error ir a la página de error. Es un filtro. ¡¡¡ NO FUNCIONA. !!!

if ( !empty($error) ) {
header( 'Location: error.php' );
die;
}


// 3- Formar mensaje ($cuerpo) y envíar email a mi buzón. Si sustituyo el punto 2
// por cualquier otra instrucción envía correo perfectamente.

$cuerpo = "
De: $nombre \n\r
Email: $email \n\r
Mensaje: \n\r
$mensaje
";

mail( 'buzon1.@brasilpipa,com','Mensaje de formulario de contacto.',$cuerpo )


?>

También he intentado bifurcar el flujo mediante un hucle y un condicional pero el código php parece ser demasiado rígido o yo conozco pocas sentencias.

Espero vuestra ayuda