Pues el problema que tienes parece ser que es por las cabeceras que ya emite PHP para el uso de las sesiones y las que tu emites luego para gestionar la descarga ..
session_cache_limiter()
http://www.php.net/manual/en/functio...he-limiter.php
Fijate en los comentarios de los usuarios .. Ahí cada uno da una solución al problema .. pruebalas y nos comentas.
Hay unos que dicen que indicando "private" u otras cabeceras en el control del caché con esa función .. otros lo hacen directamente con cabeceras HTTP (usando header() ) .. en fin, como hay variedad lo mejor es que lo pruebes (y de paso nos das tus impresiones sobre el tema y como te fué).
Un saludo,