Ver Mensaje Individual
  #6 (permalink)  
Antiguo 15/09/2006, 10:29
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Cita:
Iniciado por foo Ver Mensaje
dado el siguiente codigo:

Código PHP:
<?php
session_start
();

if (empty(
$_SESSION['tipo_usuario']) || $_SESSION['tipo_usuario'] != 'admin') {
    
header ('Location: /login.php');
}

// parte protegida
echo "admin";

?>
y asumiendo que $_SESSION['tipo_usuario'] tiene el valor 'normal', se puede deducir que:

1. el usuario podria ver la parte protegida aun cuando no cuente con un usuario de tipo 'admin'
2. el usuario sera redirigido a login.php
3. el usuario podra acceder a la parte protegida, solo si tiene un usuario de tipo 'admin'

respuesta: 1

argumentos:
se debe terminar la ejecucion del script (exit, die, etc) despues de la redireccion, porque existen herramientas de seguridad o navegadores que "no entienden" la redireccion
Un comentario sobre el argumento dado.

PHP continua la ejecución del script hasta finalizar el mismo, ahí es cuando se entrega todo lo que tenga el "buffer de salida" PHP listo para enviar, en este caso sería la cabecera HTTP enviada por la función header() de tipo "Location" (redirección) para que el "cliente" cambie la página que está viendo por otra.

Un exit; fuerza a terminar la ejecución del script en ese punto, cosa totalmente lógica pues si vamos a "cambiarnos" de script .. ya no nos interesa que nada más se pueda ejecutar y por ende (termino del script) se envian las cabeceras HTTP al cliente para que este interprete su parte.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.