Foros del Web » Programando para Internet » PHP »

Redireccionar página despues de abrir formulario

Estas en el tema de Redireccionar página despues de abrir formulario en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 16/05/2008, 10:51
 
Fecha de Ingreso: abril-2008
Ubicación: Variable
Mensajes: 23
Antigüedad: 16 años
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
  #2 (permalink)  
Antiguo 16/05/2008, 11:02
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: Redireccionar página despues de abrir formulario

ese error se envia cuando se efectua un header location y ya hay una salida anterior de codigo lo cual no es permitido, por lo demas hay varios diske manueales en internet que ni los prueban... :º ojo con eso no confiarse de todo mejor probar....
lo mismo aqui lo podemos ayudar pero tambien podemos cometer errores ahora... ese redireccionar para ver errores de llenado puede hacerlo en la misma pagina no es necesario ocupar muchas para informar de cada error en su caso tambien puede ocupar javascript, para mostrarle al cliente que no ha llenado un campo....

en su caso ese header location esta mal ya que antes ya tiene salidas de codigo me eexplico codigo html SU formamulario para ser exactos puede ser mejor que haga una compracion arriba con php que al presionar el boton ejecute codigo y si no va una de sus campos muestre dicho error saludos...
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #3 (permalink)  
Antiguo 16/05/2008, 11:24
 
Fecha de Ingreso: abril-2008
Ubicación: Chihuahua Mexico
Mensajes: 166
Antigüedad: 16 años
Puntos: 15
Respuesta: Redireccionar página despues de abrir formulario

para cerrar la salida del hader utiliza antes ob_clear(); y despues de esso mandas el header referer.

No estoy seguro si es ob_clear tengo tiempo que no muevo eso pero checate en php.net alli biene
  #4 (permalink)  
Antiguo 16/05/2008, 12:22
Avatar de Squizophrenia  
Fecha de Ingreso: mayo-2008
Ubicación: Barcelona (Spain)
Mensajes: 41
Antigüedad: 15 años, 11 meses
Puntos: 2
Respuesta: Redireccionar página despues de abrir formulario

Yo para estos casos siempre recomiendo procesar el formulario en la misma página, pues creo que es la mejor opción a la hora de validar un formulario en php y, además, al estar todo el código de validación al principio de la página, antes del html, no tienes problemas para realizar los headers.
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 17:47.