Maison  >  Article  >  développement back-end  >  Points de connaissances sur les cookies en PHP

Points de connaissances sur les cookies en PHP

不言
不言original
2018-05-07 09:26:131562parcourir

Cet article présente principalement les points de connaissance sur les cookies en PHP, qui ont une certaine valeur de référence. Maintenant, je le partage avec tout le monde. Les amis dans le besoin peuvent s'y référer

Qu'est-ce qu'un cookie

Les cookies, 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 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 uniquement utilisé 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 domaines suivants :

http est un protocole apatride et des informations supplémentaires sont nécessaires pour maintenir la session. Pour marquer les données, les cookies sont la méthode la plus couramment utilisée. 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 transmis par l'utilisateur via la super variable globale $_COOKIE. $_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 et l'utilisateur ferme la navigation. Le cookie sera effacé une fois le serveur installé ; le chemin est par défaut le chemin de la page actuelle, c'est-à-dire que la partie avant la dernière barre oblique inverse du domaine URL est par défaut le nom de domaine de la page actuelle ; Si vous souhaitez étendre le champ d'utilisation, il peut être défini sur le nom de domaine parent ou le nom de domaine de premier niveau ; httponly est par défaut sur 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 un horodatage passé, tel que time() – 3600. Donc pour supprimer le cookie foo, le code peut être

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

Bonne pratique pour les cookies

Depuis le cookie littéral On peut voir que ce qui est enregistré est un fragment de données. 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 pour les novices, tels que le code suivant :

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

Lorsque le cookie foo n'est pas défini, le d'abord Une erreur se produira lors de l'exécution de 5 lignes. 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 celles de la fonction d'en-tête, c'est-à-dire : elle ne peut pas ont déjà été envoyés.

Recommandations associées :

Utilisation de cookies en PHP

php utilise des cookies pour réaliser la fonction des pages Web mémorisant les noms d'utilisateur et les mots de passe

php définit les cookies

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
Article précédent:Session d'apprentissage en PHPArticle suivant:Session d'apprentissage en PHP