Se borra la SESSION en PHP cuando hago clic en un botón o toco F5

publicado por: Anonymous

Formule mi pregunta en esta pagina pero en su versión oficial, pero me cuesta mucho expresarme correctamente en ingles.

INTRODUCCIÓN
Tengo un sistema en PHP que tiene dos tipos de usuarios, Administrador y Usuario, tengo una carpeta “headers” y dos archivos “header-user.php” y “header-admin.php”. Las paginas que puede usar el administrador tienen require_once(‘headers/header-admin.php’); y las del usuario require_once(‘headers/header-user.php’);

PROBLEMA
El problema es que mi sistema no se adaptaba a todas las pantallas y mucho menos a los móviles, por lo que decidí usar materializecss, por ende, yo reemplace los archivos “header-user.php” y “header-admin.php” por los que usan materialize y ahora se adaptan perfectamente, el problema es muy raro y lo voy a comentar a continuación:
Cuando hago uso de los nuevos headers y toco F5 o hago clic en cualquier opción de la barra de navegación, mi SESSION de PHP se elimina.

TEST QUE HICE
Hice los siguientes testeos:
1- Reemplazar nuevamente los headers por los antiguos y la SESSION no se borra, funciona todo perfecto.
2- Hice un echo del nombre de la persona que inicia sesión y lo muestra después de iniciar sesión pero si toco F5 o alguna opción de la barra de navegacion ya no se muestra ese nombre (tuve que comentar los chequeos de seguridad para hacer este test porque sino el sistema me saca y me dice que debo iniciar sesión )

CÓDIGO CLASE: LOGICA MÉTODO: login()

//Consultas a base de datos y chequeos antes de aquí      
$_SESSION["Usuario"] = array(
                            "id"=>$datos[0],
                            "nombre"=>$datos[1],
                            "apellido"=>$datos[2],
                            "correo"=>$datos[3],
                            "movil"=>$datos[4],
                            "cargo"=>$datos[5],
                            "empresa"=>$datos[6],
                            "foto"=>$datos[7],
                          //  if($datos[7] == "") {"foto"=>"no-photo.png";}
                            "privilegio"=>$privilegio,
                            );

                            if($privilegio == "usuario"){echo '<script language=Javascript>location.href="profile.php";</script>';}
                            if($privilegio == "administrador"){echo '<script language=Javascript>location.href="profile-admin.php";</script>';}

CÓDIGO que esta presente en todas las paginas exclusivas para admins

   <?php
            if(isset($_SESSION["Usuario"]))
            {
                if($_SESSION["Usuario"]["privilegio"] == "usuario")
                {
                 //Usuario
                 echo '<script language=Javascript>location.href="profile.php?error=E002";</script>';
                }

            }
            else{ //No inicio sesion
                 echo '<script language=Javascript>location.href="login.php?error=E001";</script>';
            }  
        require_once("headers/header-admin.php");

solución

La solución es:

$_SESSION["privilegio"] = $valor;

Yo lo usaba como array, asignándole un array.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *