Per quanto riguarda la sessione, ho provato il codice che hai messo pari pari e senza funzionare, in alternativa metti come prima istruzione:

codice:
ob_start();
e come seconda:

codice:
session_start();
ob_start() attiva un buffer per l'output, in questo modo siamo sicuri che non viene visualizzato nulla, sulla pagina, prima dell'esecuzione di session_start()