Ver Mensaje Individual
  #1  
Antiguo 28-01-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Por qué el "die" luego de un "header"

Hola,

Lo mismo han visto Script PHP que en algún momento establecían que:

Código PHP:

if($Variable){
  
header('Location: http://www.clubdelphi.com/');
  die;

Hace poco me enteré de por qué el "die" luego del "header". Es decir, el "header", en este caso, actuará como una redirección y hará que en el navegador se comienze a cargar el ClubDelphi.com. A continuación se utiliza el "die", pero, ¿para qué, si ya el usuario está fuera de nuestra página?

Pues resulta que el usuario, efectivamente, abandona nuestra página por mor del "header" en que redireccionamos al ClubDelphi. Pero es el usuario quien abandona, no el Script PHP que seguirá ejecutándose "ya en segundo plano".

Esto puede comprobarse, por ejemplo, con el siguiente código:

Código PHP:
<?php

session_start
();

if(isset(
$_SESSION['test']))
  echo 
$_SESSION['test'];

header('Location: http://www.clubdelphi.com/');

if(!isset(
$_SESSION['test']))
  
$_SESSION['test'] = '¡Hola mundo!';
    
?>
¿Qué ocurre ahí? Primero que nada iniciamos la sesión de usuario. Comprobamos a continuación si cierta variable de sesión está establecida y, si es así, mostramos el valor de la variable.

Justo después viene el "header" que ha de redireccionar al usuario a ClubDelphi.com. Entonces, ¿el código de más abajo nunca llegaría a ejecutarse? Si ejecutamos el Script anterior veremos que sí que llega a ejecutarse el código, que se comprueba que la variable de ejemplo no está aún establecida y que de ser así establece como valor de la misma la cadeba "¡Hola mundo!".

Si ejecutamos el Script, decía, la primera vez seremos redirigidos a ClubDelphi.com. Pero la segunda vez no ocurrirá así, puesto que la variable de sesión que utilizamos a modo de ejemplo estará establecida y por tanto podremos ver su valor: ya el header no tendrá efecto, puesto que ya habremos enviado la salida al cliente/navegador.

Así que ya sabéis, ojo con los "die", puesto que a veces si no se mata un Script a tiempo este sigue ejecuándose... incluso cuando a la vista parezca que ya nos fuimos a otro lado...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita