Hola,
estoy teniendo un problema con unas variables de cookies. Os pongo en contexto. Un pequeño visor de archivos en el que hay un simple index.php idéntico en cada carpeta que lista el contenido de la carpeta y la representa de forma atractiva visualmente hablando, además de filtrar ciertos contenidos en función del tipo de usuario.
Resulta que cuando tengo una página index.php que admite un parámetro GET llamado "action", de modo que si su valor es 'login', reestablezco las variables de session y cookies, me muestra un formulario de login típico de contraseña, sólo la contraseña. Dependiendo de al contraseña los privilegios de usuario serán unos u otros.
Cuando hacemos login, llamamos a esta misma página por POST, y entonces establecemos las variables de SESSION y de COOKIE. El problema viene que al hacer logout, llamo a esa misma página con el parámetro "?action=login" para reestablecer las variables de session y de cookies, para pedir las nuevas con $_SESSION['user'] = 'no' y setcookie("user", "no", time()+100, '');
El estado una vez hago logout es el siguiente:
$SESSION['user'] = 'no';
$COOKIE['user'] = 'no';
El problema es que si estando en el formulario de login, le doy al logo de la web, hago una llamada de nuevo a index.php, sin la variable GET "action=login", pero con las variables $SESSION['user'] y $COOKIE['user'] con el contenido 'no', supuestamente. Y digo 'supuestamente', porque cuando carga la página, imprimo esas variables y resulta que están con el valor que tenían antes de hacer el logout. He probado también eliminando la cookie, entera, para nada.
¿Cómo es esto posible? ¿Se os ocurre algún posible motivo?
Es decir, en una página establezco el valor: 'no' a la cookie y al darle al botón del logo y volver a entrar en la misma página resulta que su valor vuelve a ser el anterior en lugar de 'no', tanto el suyo como el de la sesión.
Si queréis ver el código, os lo pongo, pero viene a ser un IF detrás de otro IF detrás de otro IF... comprobando primero si hay GET, luego si hay POST, luego si hay COOKIE, y luego si hay SESSION, vamos, que son un montón de líneas sin mucho contenido. Lo que me interesa saber es si hay alguna peculiaridad de las cookies que ocasionan este tipo de problemas.
PD: Sé que es una forma burda, ineficiente y cutre de hacerlo, pero es lo que hay porque no tengo acceso a la configuración PHP para cambiar el tiempo de duración de "session", de modo que el unset_session(); no me sirve porque no es inmediato.