Buenas, me parecio muy bueno tu codigo pero creo que he
encontrado un pequeño fallo en una de las paranoias, la
referente a la función session_cache_limiter() pues según el
manual de PHP:
Cita: Al comenzar la ejecución del script, el limitador de caché se reestablece al valor por defecto guardado en session.cache_limiter. De este modo, es necesario llamar a session_cache_limiter() en cada petición (y antes de llamar a session_start()).
y en tu codigo aparece despúes.
Saludos