Ho dato uno sguardo rapido, un problema potrebbe essere l'utilizzo degli header improprio. Le funzioni per inviare header devono essere utilizzate prima di qualsiasi output.
Anche se c'è la soluzione, basta bufferizzare l'output, puoi vedere qui:
http://forum.html.it/forum/showthread/t-1100350.html