Ver Mensaje Individual
  #5 (permalink)  
Antiguo 15/03/2005, 10:15
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El objetivo del ejemplo que planteeas es ese mismo .. si tal condición .. redireccionas "cambias" a otra página .. si tal otra condición .. se redirecciona a otra página/Script.

Todo "HTML" en ese script no tiene sentido .. las cabeceras HTTP enviadas por header() como por ejemplo lo de "Location" se ejecuta antes que cualquier otro HTML/javacript pueda llegar al cliente (navegador) y este sea interpretado. Por ende es ahí donde dá problemas si das otra "salida" al navegador antes de usar header() .. Debes enfocar ese tipo de scripts PHP como de "proceso" .. es decir .. sin nada de salida .. pues ya lo determina ese redireccionmiento que haces según la condición se cumpla o no.

Si tu haces un header() (de Location) y no terminas el script (su ejecución) con exit .. el script continua hasta el final, al terminar este .. el "buffer" de salida se entrega al cliente y con el viajan tus cabeceras y demás cosas que envies (cookeis, etc ...).

La idea principal de usar "header("Location: ")" suele ser la de "terminar la ejecución de ese script en ese punto y cambiar a otro ..." por ende suele ser recomendable usar exit; .. un ejemplo:

Código PHP:
<?
if ($nose=="valor"){
  
header("Location: nose.tal");
  exit;
}

<
html>
<
head>
</
head>
<
body>
bla bla
</body>
</
html>
Según el ejemplo .. si se cumple mi condición (PHP) .. "salgo" del script hacia otro (lo redirecciono) y termino la ejecución del script en ese punto .. si no lo hiciera .. el código siguiente se ejecutaría.

Si no se cumple la condición .. puedo seguir dando "salida" al cliente en ese mismo script .. Útil este tipo de construcciones para sistemas de "validación" (autentificación ..etc) donde si tal cosa no sucede .. hay que "salir" del script sino, se continúa normalmente.

Un saludo,