Foros del Web » Programando para Internet » PHP »

Se puede perder una sesion por un header?

Estas en el tema de Se puede perder una sesion por un header? en el foro de PHP en Foros del Web. Hola, Estoy con un problemilla y no sé como salir, a ver si alguien me puede echar una mano. Tengo dos archivos, en uno realizo ...
  #1 (permalink)  
Antiguo 21/02/2006, 08:53
 
Fecha de Ingreso: septiembre-2004
Mensajes: 37
Antigüedad: 20 años, 1 mes
Puntos: 0
Se puede perder una sesion por un header?

Hola,

Estoy con un problemilla y no sé como salir, a ver si alguien me puede echar una mano.

Tengo dos archivos, en uno realizo una validación de login y una vez validado mediante un "header("location: ")" voy al otro archivo. El problema que tengo es que al ser redireccionado a ese archivo de destino, he perdido las variables de sesión que he creado en el primer archivo.

Os pongo el codigo para que sepais lo que digo:

Este es mi primer archivo, el que valida el usuario y contraseña:

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

include(
"inc/conecta.inc.php");
$db sel();
if (
$_POST["user"] && $_POST["password"]) {
    
//Comprobamos el USUARIO y CLAVE
    
$result mysql_query("SELECT * FROM usuarios T1, usuarios_tipo T2 WHERE T1.USER = '".$_POST["user"]."' AND T1.PASSWORD = '".$_POST["password"]."' AND T1.NIVEL = T2.IDTIPO",$db);
    
$row mysql_fetch_array($result);

    
//USUARIO y CLAVE válidos. Definimos la sesión y guardo los datos
    
if (mysql_num_rows($result)!=0){
        
$_SESSION["idusuario"] = $row["IDUSUARIO"];
        
$_SESSION["idtipo"] = $row["IDTIPO"];
    }else{
    
//Si USUARIO y CLAVE NO son válidos mostramos una advertencia
?>
    <script>
    function fjcsNoValido() {
          alert("Usuario y/o contraseña NO VALIDOS");
    }
    fjcsNoValido();
    </script>
<?php
    
}
}

//Miramos si hay usuario logeado. 
if ($_SESSION["idusuario"]) {
    switch (
$_SESSION["idtipo"]) {
        case 
2:
            
header("Location: destino1.php");
            break;
        case 
3:
            
header("Location: destino2.php");
            break;
    }
}
En ninguno de los archivos de destino parece que se haya conservado la sesión. Este es el codigo del destino, simplemete intentando mostrar las variables de sesion y no muestra nada:

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

echo 
"IDUSUARIO: ".$_SESSION["idusuario"]."<br><br>";
echo 
"IDTIPO: ".$_SESSION["idtipo"]."<br><br>";

?>
Alguna idea?? no sé ya por donde cogerlo...
  #2 (permalink)  
Antiguo 21/02/2006, 09:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
En tu código no propagas el SID manualmente (en tus redireccionamientos por Header()).

Deberías indicar como tu configuración de PHP propaga el SID. Según tu código deberías propaga el SID por cookies y en consecuencia necesitas un navegador que acepte cookies y que ningún dispositivo tipo firewall, antivirus o equivalente bloquee esas cookies.

Lo más probable es que en tu configuración de PHP no propagues el SID en cookies (session.use_cookies = ON) y/o que tu navegador no acepte cookies o alguna otra cosa las esté bloqueando.

más info:
www.php.net/session

Un saludo,
  #3 (permalink)  
Antiguo 21/02/2006, 09:56
 
Fecha de Ingreso: septiembre-2004
Mensajes: 37
Antigüedad: 20 años, 1 mes
Puntos: 0
Anda, pues la verdad es que no había pensado en el tipo de configuración de PHP ni nada de eso.

Ahora le echaré un vistazo, pero seguro que tiene que ser esto, pues estos tipos de redirecciones los he hecho otras veces (otros servidores) y nunca me han dado problemas.

Muchisimas gracias por la ayuda.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:15.