Ver Mensaje Individual
  #3 (permalink)  
Antiguo 21/12/2004, 06:26
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
safe ..

Te faltó un detallito .. usar un exit; tras los header() de tipo "location" .. sino, el código siguiente se intentará ejecutar (de hecho se ejecutará) .. el "que haga" dependerá de la lógica del mismo ..

Tal vez en este caso no sea relevante usar exit; o no .. (para terminar la ejecución del script en ese punto .. pues el objetivo es "cambiar" la ejecución de ese script por otro .. lo cual se le dice haciendo que el "cliente" vía el "location", pida otro script al servidor).

Un ejemplo donde puede ser crítico usar o no exit;

Código PHP:
<?=
if ($variable!="valor"){
header("location: tal.tal";
}

$sql="INSERT INTO tabla (campo) VALUES ('$variable')";
En ese caso .. si nuestra $variable no cumple el valor indicado .. se ha de redireccionar a otra página . .esto lo hará por el "location" (lanzado por el header()) .. pero la ejecución del script en "PHP" seguirá hasta el final .. esto probocará que se ejecute ese "INSERT" por ejemplo a una BD con el "Valor" que justamente estabamos "validando" de alguna forma par que no se ingrese si tal condición se cumple.

Las cabeceras HTTP (o salida en general) se envian al cliente cuando el scirpt PHP termina su ejecución por completo: llega al final .. ya sea por la lógica de este (if () .. else .. etc estructuras de control) o por que se termina la ejecución de este .. ya sea forzata con un exit() o die() .. o simplemente llegó al final.

Un saludo,