Il tuo problema è la mancanza di propagazione delle sessioni causata dall'header location.
Il codice indicato risolve il problema ed assicura inoltre che eventuali modifiche alla sessione vengano effettivamente salvate prima di eseguire il redirect.