metti ob_start()
prima di tutto

il problema è semplice, dopo l'invio di html non puoi modificare gli header che sono già stati inviati, con ob_start() bufferizzi l'output e lo invii tutto insieme

ciao