Vedo che hai diversi echo prima della funzione header(), così non funziona.
Leggi la documentazione della funzione header() (fallo con tutte le funzioni che ti sembra non facciano il proprio dovere, specialmente se sei alle prime armi), c'è scritto chiaramente che non debbono esserci output prima del suo utilizzo, in caso contrario riceverai l'errore "headers already sent".
Occhio, anche spazi vuoti e ritorni a capo fuori dai tag <?php ?> sono considerati output, così come l'uso della codifica UTF8 semplice, all'inizio del file mette un carattere non stampabile, quindi invisibile, ma c'è e conta come output, usa UTF8 Senza BOM per salvare i file PHP.