Mettici il header dopo l'apertura della sessione, o meglio ancora, dopo che hai finito l'interrogazione.
header() inizia una sessione per conto proprio, e quindi puoi fare quel che vuoi, finché non azzeri quello, e non so se si può, la sessione rimane aperta.
Poi, successivamente, il print crea un'altra sessione, con un proprio id.
Il session_start() crea una sessione volatile, che viene mantenuta fino al prossimo script. Se lo script successivo non riapre la sessione, è automaticamente chiusa. E' un po' difficile da spiegare.
Mettiamo che hai una pagina di login, dove c'è session_start() nella prima riga. Poi premi Invio, e la pagina viene chiusa, e con POST o GET invii username e password al server, a uno script differente. Se questo script ha session_start(), la sessione verrà mantenuta, se non ce l'ha, e come se fosse iniziata una nuova sessione.
Questo meccanismo è molto comodo per tenere la sessione aperta senza impiegare dei cookie. C'è scritto anche nel manuale PHP, che session_start() deve essere prima di un qualsiasi output, quali header, print, echo. Altrimenti non funziona.
Prova per credere...
Giovanni
---
http://www.y2ksw.com/vbulletin