« N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP. »
source
« Règle importante : l'appel de cette fonction doit se faire avant tout envoi au navigateur (instruction echo, print, espace blanc, balise html...) sous peine de générer une erreur de type Headers already sent by.... Cette erreur signifie que la page a déjà été envoyée au navigateur avant de vouloir envoyer des entêtes HTTP. La logique de développement demande le contraire ! »
source
Au début de ton code, tu fais des require d'élément php.
Par conséquent, ton header(location:) ne peux pas fonctionner.
