1. Préface▲
Bonjour à tous !
En étudiant ce tutoriel, vous allez comprendre comment bien utiliser les en-têtes en PHP.
Celles-ci sont très utiles en PHP. Mais leur utilisation est très rigoureuse pour des raisons techniques que nous aborderons dans ce tutoriel.
Le fonctionnement des en-têtes étant en rapport direct avec le protocole HTTP, je vais expliquer les quelques notions de celui-ci qui vont vous être utile pour la suite.
2. Présentation des en-têtes▲
Comment reconnaître les en-têtes PHP ? La majorité est rédigée manuellement grâce à la fonction header()Liens vers la documentation PHP au sujet de la fonction header() dont l'utilisation la plus répandue est la redirection qui est invisible aux yeux de l'utilisateur.
header('
location:index.php
'
);
// Redirection vers index.php
Cependant, ce n'est pas la seul fonction "en-têtes" (ce serais trop facile sinon ^^). Il en existe d'autres.
Il s'agit des fonctions session_start()Lien vers la documentation PHP au sujet de la fonction session_start() et setcookie()Lien vers la documentation PHP au sujet de la fonction setcookie().
Pour ceux qui ne le sauraient pas, session_start() sert à créer une session ou à restaurer celle qui est déjà sur le serveur et setcookie() sert à envoyer un cookie à l'utilisateur.
3. Que faire pour bien utiliser les en-têtes ?▲
Pour bien utiliser les en-têtes, il faut respecter la règle suivante :
Toujours placer les fonctions en-têtes avant toute sortie vers le navigateur.
Bon alors l'expression "sortie vers le navigateur" n'est peut être pas très claire pour tout le monde.
Les sorties vers le navigateur sont les fonctions de renvoie de texte (echo, print, ...), le code html, les mises en formes du code (espaces, sauts à la ligne, …).
C'est pourquoi, il est conseillé afin de ne pas avoir de mauvaise surprise de commencer toujours par s'occuper des en-têtes en début de page.
4. Pourquoi de telles mesures ?▲
Ce n'est pas, contrairement à ce que l'on pourrait penser, une erreur de PHP.
Même si PHP n'est pas parfait, vu le nombre de versions déjà passées, ce genre de problème aurait été réglé.
En fait, c'est le protocole http qui nous force à procéder ainsi.
Je ne vais pas m'amuser ici à vous expliquer le protocole http (je vous ai d'ailleurs mis un lien vers un article sur le protocole http en bas de ce tutoriel) mais sachez que celui-ci se déroule en deux étapes :
La première consiste à faire les échanges d'en-têtes avec le navigateur et la deuxième à envoyer les fichiers au navigateur.
Comme vous pouvez le constater, les en-têtes sont la première étape donc on doit s'en occuper en premier.
Une fois que la deuxième étape a commencé, on ne peut plus revenir à la première.
Vous comprendrez donc que si on envoie des données au client, on est dans la deuxième étape et que donc on ne peut plus s'occuper des en-têtes.
5. Quelques exemples d'utilisation des en-têtes▲
Voici donc quelques exemples d'utilisations d'en-têtes en PHP pour bien comprende à quoi elles peuvent bien servir. Vous verrez en lisant ces exemples que l'on peut faire de nombreuses choses avec les en-têtes ! Pour commencer, voici encore une fois la redirection :
header('
Location:index.php
'
);
//L'utilisateur sera redirigé vers index.php automatiquement et ne pourra rien y changer.
Voici un code vous permettant d'indiquer au navigateur le type de fichier qu'est la page (par exemple fichier audio, jpeg, pdf, ...) :
header('
Content-Type: image/jpeg
'
);
//Indique au navigateur qu'il s'agit d'un fichier jpeg. Celui-ci l'affichera comme un jpeg normal.
//Cette utilisation est très utilie si vous créez des images avec une librairie telle que GD (j'ai mis un lien à la fin à propos de GD).
Voici un code vous permettant de générer une erreur 404 (La page n'existe pas) :
header("
HTTP/1.0 404 Not Found
"
);
Et voici pour terminer avec les exemples , voici comment interdire la mise en cache.
6. Conclusion▲
J'espère que ce petit tutoriel vous a plu et que vous êtes maintenant des pros des en-têtes en PHP !
Si vous voyez une erreur dans ce tutoriel, signalez la moi, c'est comme ça qu'on avance.
Voici, pour ceux qui sont intéressés, un article sur le protocole http :
Le Protocole httpLe protocole http
Voici un lien vers un tutoriel à propos de GD :
La manipulation d'images en PHP : librairie GDGD