El comportamiento que indicas es realmente extraño. No hay motivo que a priori explique que las variables de sesión puedan intercambiarse por las de otro usuario.
Las variables de sesión se apoyan a menudo en cookies del navegador. Podría darse el caso que no estén activadas para un navegador dado, o incluso que se haya hecho login con un usuario y se haya quedado algún rastro que haga confundir a la aplicación web. Podrías probarlo con otro navegador para descartar ese problema.
Puedes revisar estas cuestiones para asegurarte que no haya problemas:
- Comenzar el script PHP con session_start(), justo al iniciar el código de la página
<?php
session_start();
- Al cambiar de usuario o hacer el logout, asegurarte que se invalidan las variables de sesión.
<?php
session_destroy();
Puedes probar a generar incluso otro id de sesión con:
<?php
session_destroy();
session_regenerate_id(true)
- Asegúrate que no estás asignando un array a mano tú mismo sobre $_SESSION[];
- Fíjate que la URL de la página sea siempre del mismo dominio. Es decir, si estás en www.example.com podrías tener un usuario distinto activo que en example.com porque en la práctica son dominios distintos.
Otra cosa, al hacer redirecciones (posiblemente después de ejecutar el código del logout) puedes invocar a exit(); antes de header(), para asegurarte que el script actual se cierra y no se mezcla con el siguiente.