Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/12/2006, 10:49
Krunoslav
 
Fecha de Ingreso: julio-2006
Mensajes: 50
Antigüedad: 17 años, 10 meses
Puntos: 0
Redireccionar

Hola, todas las páginas de mi sitio, y en particular la para registrarse son de la siguiente forma:

registrarse.php
Código PHP:
<?php

echo "<table border=\"1\" align=\"center\" width=\"700\"><tr><td colspan=\"2\">";
include(
"titulo.php");
echo 
"<tr><td valign=\"top\">";
include(
"menu_c.php");
echo 
"<td>";
include(
"registrarse_p.php");
echo 
"</table>";

?>
Donde 'registrarse_p.php' es:

Código PHP:
<?php

/* Validación de datos */
if(isset($_POST['registrarse'])) {
    if(
strlen($alias)<|| strlen($alias)>20) {
        
$aviso="Tu alias debe tener entre 3 y 19 caracteres";
    } else if(
strlen($clave)<|| strlen($clave)>20) {
        
$aviso="Tu clave debe tener entre 5 y 19 caracteres";
    } else if(
strlen($pais)>25) {
        
$aviso="El campo 'pais' debe tener menos de 25 caracteres";
    } else if(
strlen($ciudad)>25) {
        
$aviso="El campo 'ciudad' debe tener menos de 25 caracteres";
    } else if(
$clave!=$cclave) {
        
$aviso="Fíjate en reescribir bien tu clave";
    } else {
        
header("Location: listo.php");          // Aquí está el meollo
        
exit();
    }
}

//Formulario

echo $aviso//muestro si hay errores.
Y como es de esperar, me sale el error de "Warning: Cannot modify header information - headers already sent by"

Mi idea es que el usuario al poner malos los datos, se siga mostrando el formulario pero con un mensaje de error abajo, y eso es lo que hago con la variable $aviso. Pero si los datos están bien, que entonces redireccione a una página (listo.php) distinta.
Y esto último es lo que no sé cómo hacer bien.

Porque una "solución" es tener que hacer una validación similar, fuera de registrarse_p.php, es decir, al comienzo de registrarse.php, antes del título y todo eso. Pero perdería la estructura de todas las páginas (que son de la forma que expliqué incialmente).
Lo que me hace pensar que estoy haciendo todo muy enredado y que debe haber una forma de hacer todo esto más 'limpiamente'.
Porque me imagino que esto de redireccionar cuando el formulario está bueno, ha sido programado mil veces, pero de forma más ordenada.

¿Qué me sugieren?

De antemano gracias por sus ideas.