|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PHP - Les cookies et les en-têtes HTTPLes en-têtes HTTPLors de chaque échange par le protocole HTTP entre votre navigateur et le serveur, des données dîtes d'en-têtes contenant des informations sur les données à envoyer (dans le cas d'une requête) ou envoyées (dans le cas d'une réponse). Les informations en question, généralement sur une page web ou une image, suivent ces en-têtes. Les en-têtes HTTP permettent aussi d'effectuer des actions sur le navigateur comme le transfert de cookie ou bien une redirection vers une autre page. Ces en-têtes sont les premières informations envoyées au navigateur (pour une réponse) ou au serveur (dans le cas d'une requête), elles se présentent sous la forme : en-tête: valeur
PHP fournit une fonction permettant d'envoyer très simplement des en-têtes HTTP manuellement du serveur au navigateur (il s'agit alors d'une réponse HTTP. La syntaxe de cette fonction est la suivante : booléen header(chaîne en-tête HTTP)
Voici quelques utilisations possibles de la fonction header() :
Récupérer les en-têtes de la requêteAlors que la fonction header() permet d'envoyer des en-têtes HTTP au navigateur, PHP fournit une seconde fonction permettant de récupérer dans un tableau l'ensemble des en-têtes HTTP envoyées par le navigateur. Voici la syntaxe de cette fonction : Tableau getallheaders();Le tableau retourné par la fonction contient les en-têtes indexés par leur nom. Voici un script permettant par exemple de récupérer des en-têtes particuliers. <? $entetes = getallheaders; echo $entetes["location"]; ?> Créer le cookieUn cookie) est un petit fichier texte stocké sur le disque dur du client, permettant de mémoriser individuellement des préférences pour chaque utilisateur. Pour créer un cookie sur une machine appelant un de vos scripts PHP, il faut utiliser
la fonction setcookie() dans celui-ci. La fonction SetCookie() permet d'envoyer
les informations relatives aux cookies dans les en-têtes HTTP
booléen setcookie(chaîne NomDuCookie, chaîne Valeur, entier expiration, chaîne chemin, chaîne domaine, entier securisé);L'argument NomDuCookie est celui qui vous permettra de faire référence à un cookie spécifique stocké sur le disque des utilisateurs. A chaque cookie correspond un nom auquel une valeur est attribuée. Les arguments suivants servent à déterminer les conditions de validité du cookie :
Quelques précisions sur les cookies
Exemple d'utilisation de cookiesVoilà donc un script permettant de savoir si un visiteur est déjà venu sur le site pendant le mois : <?php setcookie( "Visites", "Oui", time()+2592000, "/", ".commentcamarche.net",0); ?>Quelques autres exemples : <?php // Envoi d'un cookie qui disparaîtra après la fermeture du navigateur SetCookie("CcmUserSessionCookie","$login:$pass"); // Envoi d'un cookie qui restera présent 24 heures SetCookie("CcmDejaVisite","1",time()+3600*24,"/",".phpfrance.com",0); // Envoi d'un cookie qui s'effacera le 1er janvier 2001 SetCookie("CcmAn2000","1",mktime(0,0,0,1,1,2001),"/",".phpfrance.com",0); ?> Récupérer les valeurs d'un cookieLorsqu'un cookie pour votre domaine est présent sur le disque du client, si celui-ci visite une de vos pages PHP dont le chemin est inclut dans le paramètre chemin (si le chemin est / le cookie est valide pour toutes les pages de votre site) le cookie sera automatiquement passé en paramètre à votre script et sa valeur sera directement accessible dans la variable $NomDuCookie. Voici le même script que précédemment permettant cette fois ci de compter le nombre de visite de la page par le visiteur : <?php $Visites++; setcookie( "Visites", $Visites, time()+2592000, "/", ".commentcamarche.net",0); ?>A chaque appel de la page, le script récupère la valeur du cookie nommé Visites, l'incrémente, puis envoie le cookie dont la valeur a été incrémentée. Supprimer un cookieIl peut éventuellement être utile de proposer à l'utilisateur de supprimer certains de ses cookies, ou bien de le faire vous même de façon transparente. Pour ceci il suffit de renvoyer le cookie grâce à la fonction setcookie() en spécifiant simplement l'argument NomDuCookie : <? setcookie("Visites"); ?>Une autre méthode consiste à envoyer un cookie dont la date d'expiration est passée : <? setcookie("Visites","",0,"/","",0); ?> Quelques réalisations avec les cookiesLors d'une inscription à CCM, un mot de passe et un identifiant vous sont demandés. Après confirmation de votre inscription en renvoyant simplement le mail qui vous a été automatiquement envoyé, vous pouvez utiliser votre login et votre mot de passe dans la section s'identifier, activant un cookie sur votre disque dur, contenant un numero d'identification ainsi qu'un numéro aléatoire permettant au site de vous reconnaître dans certaines sections en comparant ces valeurs avec celles stockées dans une entrée de la base de donnée. Cela fait apparaître de nouvelles options aux membres CCM sans gêner les non-membres ! Trucs & astuces pertinents trouvés dans la base de connaissances
Discussions pertinentes trouvées dans le forum
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||