Foros del Web » Programando para Internet » PHP »

Redireccionar

Estas en el tema de Redireccionar en el foro de PHP en Foros del Web. 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\">" ; ...
  #1 (permalink)  
Antiguo 10/12/2006, 10:49
 
Fecha de Ingreso: julio-2006
Mensajes: 50
Antigüedad: 18 años, 4 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.
  #2 (permalink)  
Antiguo 10/12/2006, 11:55
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Redireccionar

Siempre, por comodidad y orden, conviene poner el código PHP al principio del archivo, generar en ese momento todo el código necesario y todas las variables necesarias, y luego escribir el html con llamadas de tipo
<?php echo $variable; ?>

cuando sea necesario.

De esta forma queda más ordenado, más independiente del html y también más fácil de modificar, ya que sabés dónde está el código.


Saludos.
  #3 (permalink)  
Antiguo 11/12/2006, 21:20
 
Fecha de Ingreso: julio-2006
Mensajes: 50
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Redireccionar

Es decir, es preferible hacer una página (registrarse.php, por ejemplo) con todo el código para registrarse y dentro de ella poner los include(menú) e include(título)?
Ahora que me dices, parece ser más ordenado.
Muchas gracias.
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 14:09.