Maison  >  Article  >  développement back-end  >  Explication détaillée des cookies pour le contrôle de session PHP

Explication détaillée des cookies pour le contrôle de session PHP

小云云
小云云original
2018-03-26 14:24:381933parcourir

1. Qu'est-ce qu'un cookie :

Parfois également utilisé au pluriel, les Cookies désignent les données (généralement cryptées) stockées sur le terminal local de l'utilisateur par certains sites internet afin d'identifier l'identité et effectuer un suivi de session. L'application la plus typique des cookies consiste à déterminer si un utilisateur enregistré s'est connecté au site Web. L'utilisateur peut être invité à conserver les informations de l'utilisateur la prochaine fois qu'il entrera sur le site Web pour simplifier la procédure de connexion. Ce sont les fonctions des cookies. Une autre application importante est le traitement du « panier ». Les utilisateurs peuvent choisir différents produits sur différentes pages du même site Web au cours d'une période donnée, et ces informations seront écrites dans des cookies afin que les informations puissent être récupérées lors du paiement final.

Avantages :

Bonne compatibilité

Inconvénients :

1. Trafic réseau accru

2. ne peut stocker que jusqu'à 4 Ko de données, qui varie selon les navigateurs ; le client peut désactiver ou effacer les cookies, affectant ainsi la fonctionnalité du programme.

3. C'est dangereux. Lorsque plusieurs personnes partagent un ordinateur, l'utilisation de cookies peut compromettre la confidentialité des utilisateurs et entraîner des problèmes de sécurité.

2. Comment fonctionnent les cookies :

Un cookie est un morceau de texte stocké sur le disque dur de l'utilisateur par le serveur Web, qui stocke des paires "clé-valeur". Chaque site Web peut stocker des cookies sur la machine de l'utilisateur et récupérer les données des cookies si nécessaire. Généralement, les sites Web disposent d'un fichier cookie. Chaque fois qu'un utilisateur visite le site A, il recherchera le fichier cookie du site A. S'il existe, les données de la paire nom d'utilisateur et mot de passe « clé-valeur » y seront lues. Si les données de la paire nom d'utilisateur et mot de passe « clé-valeur » sont trouvées, elles sont envoyées au site A avec la demande d'accès. Si le site A reçoit également les données « clé-valeur » du nom d'utilisateur et du mot de passe lors de la réception de la demande d'accès, il utilisera les données du nom d'utilisateur et du mot de passe pour se connecter, afin que l'utilisateur n'ait pas besoin de saisir le nom d'utilisateur et le mot de passe. Si les données de la paire « clé-valeur » du nom d'utilisateur et du mot de passe ne sont pas reçues, cela signifie que l'utilisateur ne s'est pas connecté avec succès auparavant. À ce moment, le site A renvoie la page de connexion à l'utilisateur. De plus, chaque cookie a une date d'expiration et les cookies expirés ne peuvent plus être utilisés. Les opérations de cookies couramment utilisées consistent à définir des données de cookies, à lire des données de cookies et à supprimer des données de cookies spécifiées.

Syntaxe :

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

setcookie() définit le cookie qui sera envoyé au client avec le HTTP restant en-têtes. Comme les autres en-têtes HTTP, les cookies doivent être envoyés avant que le script puisse produire une sortie (en raison des limitations du protocole). Veuillez appeler cette fonction avant de produire une sortie (y compris 100db36a723c770d327fc0aef2ce13b1 et 93f0f5c25f18dab9d176bd4f6de5d30e ou des espaces). Une fois le cookie défini, il pourra être lu en utilisant $_COOKIE lors de la prochaine ouverture de la page. Les valeurs des cookies existent également dans $_REQUEST

name : Nom du cookie.

valeur : valeur du cookie. Cette valeur est stockée sur l'ordinateur de l'utilisateur. Ne stockez pas d'informations sensibles. Par exemple, le nom est « cookiename » et sa valeur peut être obtenue via $_COOKIE[« cookiename »].

expire : délai d'expiration des cookies. Il s'agit d'un horodatage Unix, qui correspond au nombre de secondes écoulées depuis l'époque Unix (1er janvier 1970 00:00:00 GMT). En d’autres termes, vous pouvez essentiellement utiliser le résultat de la fonction time() plus le nombre de secondes que vous souhaitez expirer. Ou vous pouvez utiliser mktime(). time()+60*60*24*30 consiste à configurer le cookie pour qu'il expire après 30 jours. S'il est défini sur zéro ou si le paramètre est omis, le cookie expirera à la fin de la session (c'est-à-dire à la fermeture du navigateur).

path :Chemin du serveur valide pour le cookie. Lorsqu'il est défini sur « / », le cookie est valide pour l'ensemble du domaine du nom de domaine. S'il est défini sur « /foo/ », le cookie n'est valide que pour le répertoire /foo/ et ses sous-répertoires dans le domaine (tels que /foo/bar/). La valeur par défaut est le répertoire actuel lorsque le cookie est défini.

domaine : Nom de domaine/sous-domaine valide du cookie. Le définir sur un sous-domaine (par exemple « www.example.com ») rendra le cookie valide pour ce sous-domaine et son domaine de troisième niveau (par exemple w2.www.example.com). Pour rendre un cookie valide pour l'ensemble d'un nom de domaine (y compris tous ses sous-domaines), définissez-le simplement sur le nom de domaine (dans ce cas, « exemple.com »).

sécurisé : définissez si ce cookie est uniquement transmis au client via des connexions HTTPS sécurisées. Lorsqu'il est défini sur TRUE, le cookie ne sera défini que si une connexion sécurisée existe. Si cette exigence est gérée côté serveur, les programmeurs doivent envoyer ces cookies uniquement via des connexions sécurisées (telles que déterminées par $_SERVER["HTTPS"]).

httponly : Défini sur TRUE, le cookie n'est accessible que via le protocole HTTP. Cela signifie que les cookies ne sont pas accessibles via des langages de script tels que JavaScript. FAUX, il n'y a pas de limite.

Valeur de retour

Si la sortie est générée avant d'appeler cette fonction, setcookie() échouera et retournera FALSE. Renvoie TRUE si setcookie() s'exécute avec succès. Bien entendu, cela ne signifie pas si l’utilisateur a accepté les cookies.

Définir et lire les cookies

<?php
    $value="my cookie value"; //发送一个简单的cookie
    setcookie("testcookie",$value,time()+60);  //set cookie?><!DOCTYPE html><html><head>
    <meta charset="UTF-8">
    <title>Testcookie</title></head><body>
    <?php 
        if(isset($_COOKIE["testcookie"])) //判断是否存在
            echo($_COOKIE["testcookie"]."<br>");
        print_r($_COOKIE);    ?></body></html>

Supprimer les cookies

Pour supprimer un cookie, le délai d'expiration doit être réglé sur le passé pour déclencher le mécanisme de suppression du navigateur.

6cea04fb82bc3707e126c08c4226c5fb

用于记录当前用户访问网站的次数:

<?php

   if(isset($_COOKIE["num"]))        $num=$_COOKIE["num"];    else
       $num=0;                        //首次设置cookie

       $num=$num+1;                 
   setcookie("num",$num,time()+60*60) //发送一个cookie num记录访问次数?><!DOCTYPE html><html><head>
   <meta charset="UTF-8">
   <title>Testcookie</title></head><body>
   <?php 
       if($num>1)            echo("您已经第".$num."次访问本站点了。");        else
           echo("欢迎首次访问本站");        //关闭网页后,变量$num将被释放,但因为它的值已经保存再cookie中,所以下次打开网页会连续计数
   ?></body></html>

用户验证身份是验证cookie:

<?php  //身份验证cookie
   header("content-type:text/html;charset=utf-8");
   error_reporting(0);    //取输入的用户名和密码
       $uid=$_POST[&#39;username&#39;];        $upwd=$_POST[&#39;pwd&#39;];    //验证用户名和密码
   if($uid=="admin" && $upwd=="pass")
   {        echo("您已经登入成功,欢迎光临");        if($_POST[&#39;checkboxCookie&#39;]=="on")
       {
           setcookie("username",$uid,time()+60*60*24);
           setcookie("pwd",$upwd,time()+60*60*24);
       }
   }   
   else
       echo("登入失败,请返回重新登录");?><?php
   error_reporting(0);?><!DOCTYPE html><html><head>
   <meta charset="UTF-8">
   <title>Testcookie</title>
   <style type="text/css">form {    margin-top: 300px;    padding-left: 40%;}input[type="password"]{    margin-left: 16px;}input[type="reset"],input[type="submit"]{    margin-left: 80px;}</style></head><body>

   <form action="1.php" method="POST">

   <label>用户名:        <input type="text" name="uesrname" value=" <?php echo($_COOKIE["username"]);?>">    </label>
   <br><br>
                                                       <!-- 保留上次成功登入的用户名-->
   <lable>密码:    <input type="password" name="pwd" value="<?php echo($_COOKIE["password"]);?>" >    </lable>
                                                       <!-- 保留上次成功登入的用户名 -->
   <input type="checkbox" checked name="checkboxCookie">保留用户信息<br><br> <!-- 复选框 -->
   <input type="submit" name="put_info" value="登录">
   <input type="reset" name="rest_info" value="重置">
   </form></body></html>

相关推荐:

如何理解PHP中的会话控制

php中会话控制的深入理解

详细介绍php会话控制的实例代码

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