Per quanto riguarda la sessione, ho provato il codice che hai messo pari pari e senza funzionare, in alternativa metti come prima istruzione:
e come seconda:codice:ob_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()codice:session_start();