Lorsque vous utilisez la fonction header ou tout autres méthode envoyant des données dans l'entête d'une réponse, il vous est peutêtre déjà arrivé de reçevoir une erreur du genre:
Header already sent...
Deux raisons à cela:
- Vous avez effectuer des echo ou print avant d'appeler ces méthodes, ou bien vous avez écrit du code HTML en dehors des balises PHP avant ces méthodes, ce qui revient au même.
- Vous avez laisser une ligne vide ou bien un espace tout en haut de votre document bien que ce dernier commence par du code php et les appels aux dites méthodes, ce qui revient au même que d'avoir effectuer des echo ou print avec des espaces ou lignes vides.
Vous ne savez toujours pas à ce stade pourquoi le fait d'avoir écrit du HTML avant d'appeler ces méthodes modifiant le header pose un problème.
C'est pourtant simple, lorsque PHP détecte que vous écrivez du code HTML de retour à votre client, il considère que les headers ont été définis et doivent être envoyés. En effet, ces derniers doivent être envoyés avant tout contenu de réponse (header, puis contenu = réponse à la requête).
Vous voilà prêt à affronter la vie :)