Maison  >  Article  >  développement back-end  >  Explication détaillée des cas d'utilisation des cookies en PHP

Explication détaillée des cas d'utilisation des cookies en PHP

php中世界最好的语言
php中世界最好的语言original
2018-05-16 11:11:142004parcourir

Cette fois, je vais vous apporter une explication détaillée des cas d'utilisation des cookies en PHP, et quelles sont les précautions pour l'utilisation des cookies en PHP. Ce qui suit est un cas pratique, allons-y. jetez un oeil.

Que sont les cookies

Les cookies, ou petits cookies, sont des éléments de données stockés du côté de l'agent utilisateur (les navigateurs sont les agents utilisateurs les plus courants). Lors de la navigation sur le Web, le navigateur placera le cookie valide de la page en cours dans l'en-tête de la requête et l'enverra au serveur.

Composition du cookie

Le cookie est composé des parties suivantes :

domaine, le nom de domaine auquel appartient le cookie. Lorsque le navigateur envoie un cookie, il vérifie le nom de domaine auquel appartient le cookie et ne l'enverra que s'il correspond. Le navigateur enverra le cookie sous le domaine tlanyan.me à la demande de page de www.tlanyan.me ou dev.tlanyan.me, mais ne l'enverra pas à www.baidu.com. De même, le cookie de dev.tlanyan.me ne peut pas être envoyé à tlanyan.me car le nom de domaine est limité au sous-domaine dev.

path, le chemin auquel appartient le cookie. Les cookies définis sur /author ne seront pas envoyés au chemin /category, mais les cookies définis sur / seront envoyés à toutes les demandes de page.

name, le nom du cookie (nom de la clé).

valeur, la valeur (contenu) du cookie.

expire, délai d'expiration.

sécurisé, si ce cookie sera envoyé uniquement en https.

httponly, s'il est utilisé uniquement pour la transmission http. Lorsqu'il est défini sur true, le langage de script côté navigateur ne pourra pas accéder au cookie.

Finalités des cookies

Les cookies sont principalement utilisés dans les aspects suivants :

http est un protocole apatride et des données supplémentaires sont nécessaires pour marquer le session , les cookies sont les moyens les plus couramment utilisés. Les deux types courants de cookies, PHPSESSID et JSESSIONID, sont utilisés respectivement pour maintenir des sessions dans les applications Web PHP et Java.

Certaines données doivent être stockées côté client et les cookies sont une option. Une fois que l'utilisateur a coché « Ne plus demander », le logo peut être enregistré sur le client et le programme est à nouveau accessible pour lire les paramètres et décider de l'afficher ou non. Avec la popularité de HTML 5, cette partie de la fonction est lentement remplacée par localStorage.

Opération des cookies côté PHP

La lecture des cookies peut lire tous les cookies du côté utilisateur via la $_COOKIEsuper variable globale. $_COOKIE est un tableau qui peut être parcouru pour lire le nom et la valeur du cookie envoyé. Le navigateur envoie uniquement la valeur clé du cookie au serveur, il ne peut donc pas lire le domaine/chemin/exipres et d'autres informations du cookie car.

PHP fournit la fonction setcookie pour envoyer des cookies au client. La signature de fonction de setcookie est :

bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )

Les paramètres correspondent au contenu du cookie : expires par défaut à 0, ce qui signifie que seule la session en cours est valide. Le cookie sera effacé après la fermeture de l'utilisateur. le chemin du navigateur est par défaut le chemin de la page de la session actuelle, c'est-à-dire que la partie avant la dernière barre oblique inverse du domaine est par défaut le nom de domaine de la page actuelle. Si vous souhaitez étendre la portée d'utilisation, il peut être défini. au nom de domaine parent ou au nom de domaine de premier niveau ; httponly est par défaut false, et il est recommandé de le définir sur true pour éviter les attaques XSS.

Pour supprimer un cookie, il vous suffit de définir l'expiration du cookie sur le horodatage passé , par exemple, time() – 3600. Donc pour supprimer le cookie foo, le code peut être

setcookie('foo', '', time() - 3600);

Bonnes pratiques en matière de cookies

On voit au sens littéral du cookie qu'il enregistre des données fragments. Les cookies sont fréquemment utilisés dans le développement Web et doivent être mieux compris. Voici quelques bonnes pratiques d'utilisation des cookies :

Les données trop volumineuses et excessives ne doivent pas être enregistrées dans les cookies
Les cookies sont clairement visibles sur le client et en transit, les données sensibles ne doivent pas être enregistrées dans les cookies ; Informations ;
Pour la sécurité du site et des utilisateurs, définissez l'attribut httponly sur true autant que possible ;
Les cookies sont entièrement contrôlés par le client et sont également des entrées externes. Le serveur ne peut pas leur faire aveuglément confiance et doit les filtrer. eux.
Autres

Les cookies sont envoyés avec la demande et définis au client avec la réponse. Après avoir compris ce processus, vous pouvez comprendre certains problèmes courants rencontrés par les novices, comme le code suivant :

if (!isset($_COOKIE['foo']) {
   setcookie('foo', 'foobar');
 } 
 $foo = $_COOKIE['foo'];

Lorsque le cookie foo n'est pas défini, une erreur se produira à la ligne 5. La raison en est que setcookie définit les informations de cookie pour cette réponse. Le navigateur doit recevoir la réponse et la définir avant de pouvoir attacher le cookie aux demandes ultérieures, et cela n'est pas reflété dans cette demande.

De même, les cookies existent dans les informations d'en-tête des requêtes et des réponses, et l'en-tête doit être avant le corps de la requête, donc les restrictions d'utilisation du contexte de fonction de setcookie sont les mêmes que la fonction d'en-tête, c'est-à-dire : le corps de la réponse ne peut pas avoir été envoyé auparavant.

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Explication détaillée du traitement par lots php curl pour implémenter des cas d'opérations asynchrones simultanées contrôlables

PHP+MySQL message de mise en œuvre Explication détaillée des étapes de la file d'attente

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn