La fonction header
Article écrit par kazhar
A chaque fois que vous chargez une page web, des informations sont envoyées par le serveur à votre navigateur.
ces informations vous permettent d'interpreter la page d'une maniere, ou d'une autre
voici un exemple de header envoyé au serveur :
Code :
HTTP/1.1 200 OK
Date: Sat, 11 Jun 2005 12:10:27 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.11
X-Powered-By: PHP/4.3.11
Set-Cookie: auth_data=a%3A0%3A%7B%7D; expires=Sun,
11-Jun-06 12:10:28 GMT; path=/; domain=.phportail
.net
Set-Cookie: auth_sid=ff8f88eb7f502400e6b04aaaab938
07c; path=/; domain=.phportail.net
Connection: close
Content-Type: text/html
ceci est le header envoyé par la page d'index de phportail.
il peut etre intéréssant d'ajouter des informations à envoyer au client, afin d'ajouter diverses informations, ou de donner des consignes au navigateur.
ainsi, si vous regarder les headers de la page phportail.net (sans les www)
vous obtiendrez ceci :
Code :
HTTP/1.1 302 Found
Date: Sat, 11 Jun 2005 12:12:13 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.11
X-Powered-By: PHP/4.3.11
location: http://www.phportail.net/
Connection: close
Content-Type: text/html
le location: permet de rediriger vers le www
c'est donc à cela que sert la fonction header.
cependant, vous vous en doutez, vu que le header est envoyé avant toute données de la page, vous devez placer la fonction avant tout envoi de données à la page, sans quoi vous aurez une belle erreur "headers already send"
la fonction peut prendre trois parametres :
- le header à envoyer au serveur
et deux parametres facultatifs :
- le second indique si la fonction doit remplacer un parametre header deja existant. par défaut, un en tete donné écrasera le précédent.
mais, vous pouvez forcer les en-têtes multiples pour un même type d'en-tête
- Le second paramètre optionnel force le code de réponse HTTP à la valeur de http_response_code
voici donc un exemple de header, permettant de signaler au navigateur que la page est une page d'erreur 404 :
Code :
header("HTTP/1.0 404 Not Found");
mais, le gros avantage des headers est de pouvoir permettre des redirections.
ainsi, vous pouvez faire une redirection 301 (signalement un changement d'url permanent)
Code :
header("Status: 301 Moved Permanently", false, 301);
header("Location: http://www.votresite.com/unepage.htm");
exit();
(ici, le exit est optionnel étant donné que le navigateur va de toute facon, changer de page)
Erreur PHP : headers already sent
Source : http://www.phportail.net