Ver Mensaje Individual
  #5 (permalink)  
Antiguo 31/05/2006, 02:01
Computer XTress
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 4 meses
Puntos: 2
Hola, yo lo uso mucho para redireccionar a páginas de error... lo uso asi:

Código PHP:

session_write_close
();
header("Location: /error_msgs/seccion/error_numero.php");
exit(); 
linea1: cuando hagas un redireccionamiento, si tenes una session abierta (session_start()) necesitas utilizar session_write_close(); sino no te va a guardar los cambios en las variables de session. No te olvides de esto por que te va a dar muchisimos dolores de cabeza y no te vas a dar la más minima idea de por que ocurren ciertos errores. CLARO, sino hiciste cambios en las variables de session no es necesario.
Otra nota, si el redireccionamiento es para forzar un download de archivo, tengas o no tengas cambios en variables de session, ponelo igual sino no te va a dejar navegar tu sitio hasta q el download termine... esto me dio a mi un dolor de cabeza de 1 semana :)

la 2da linea redirecciona

la 3ra linea cierra el script. Por más que hagas un redireccionamiento si no pones un EXIT(); el resto del script sigue corriendo... y supongamos lo siguiente:

Controlas errores asi:

Código PHP:

// Controlo errores
$error 0;

if (
$user == 'hacker') {
   
$error 1;
}

if (
$_GET['clave'] != '123456') {
   
$error 2;
}

// ¿que paso?

if ($error == 1) {
    
header("Location: /errores/hackers.php");
    exit();

} else if (
$error == 2) {
   
header("Location: /errores/clave_falsa.php");
   exit();

}

borrar_todo_el_disco_rigido(); 
Suponete que cae en "$error = 1", lo redireccionas pero igualmente el script sigue corriendo y llega a la funcion borrar_todo_el_disco_rigido();

Obviamente, usarias en este caso otra linea else if para saber si $error == 0, y recien ahi ejecutarias la funcion... pero hay casos en los que eso no lo vas a poder hacer.

Bueno espero sirva de ayuda, un saludo.