Cet article explique principalement le cookie et la session du mécanisme de conversation php.
Présentation des cookies
Les cookies sont des données stockées dans le navigateur du client. Nous utilisons des cookies pour suivre et stocker les données des utilisateurs. Généralement, les cookies sont renvoyés du serveur au client via les en-têtes HTTP. La plupart des programmes Web prennent en charge les opérations de cookies. Étant donné que les cookies existent dans l'en-tête HTTP, ils doivent être définis avant que d'autres informations ne soient affichées, de la même manière que les restrictions d'utilisation de la fonction d'en-tête.
PHP définit les cookies via la fonction setcookie. Tout cookie renvoyé depuis le navigateur sera automatiquement stocké dans la variable globale de $_COOKIE par PHP, nous pouvons donc utiliser $_COOKIE['key' ] pour lire un cookie. valeur.
Les cookies en PHP sont largement utilisés et sont souvent utilisés pour stocker les informations de connexion des utilisateurs, les paniers d'achat, etc. Lors de l'utilisation d'une session, les cookies sont généralement utilisés pour stocker les identifiants de session afin d'identifier les utilisateurs. . À l'expiration de la période de validité, le cookie sera automatiquement supprimé du client. Dans le même temps, pour le contrôle de sécurité, Cookie peut également définir le domaine et le chemin. Nous les expliquerons en détail dans les chapitres suivants.
Pour des raisons de sécurité du site Web, ce site ne fournit pas la fonction d'affichage des variables des cookies pour le moment. Veuillez le tester localement par vous-même ;
Définir les cookies
PHP La manière la plus courante de définir des cookies est d'utiliser la fonction setcookie. Setcookie a 7 paramètres facultatifs. Les 5 premiers que nous utilisons couramment sont :
name (nom du cookie) accessible via $. _COOKIE['name']
value (Valeur du cookie)
expire (heure d'expiration) Format d'horodatage Unix, la valeur par défaut est 0, ce qui signifie qu'il expirera à la fermeture du navigateur
chemin (chemin valide) si Si le chemin est défini sur '/', l'ensemble du site Web est valide
domaine (domaine valide) Le nom de domaine entier est valide par défaut Si 'www.imooc. com' est défini, il n'est valable que dans le sous-domaine www
$value = 'test'; setcookie("TestCookie", $value); setcookie("TestCookie", $value, time()+3600); //有效期一小时 setcookie("TestCookie", $value, time()+3600, "/path/", "imooc.com"); //设置路径与域
Il existe également une fonction setrawcookie en PHP qui définit les cookies. Setrawcookie est fondamentalement la même que setcookie La seule différence est que la valeur ne sera pas. automatiquement urlencoded, donc urlencode doit être fait manuellement en cas de besoin.
setrawcookie('cookie_name', rawurlencode($value), time()+60*60*24*365);
Étant donné que les cookies sont définis via les en-têtes HTTP, ils peuvent également être définis directement à l'aide de la méthode des en-têtes.
header("Set-Cookie:cookie_name=value");
Suppression des cookies et délai d'expiration
À travers les chapitres précédents, nous avons découvert la fonction de configuration des cookies, mais nous avons constaté qu'il n'y a pas de fonction pour supprimer les cookies dans php. La suppression des cookies en PHP se fait également à l'aide de la fonction setcookie.
setcookie('test', '', time()-1);
Vous pouvez voir que si l'heure d'expiration du cookie est définie avant l'heure actuelle, le cookie expirera automatiquement, atteignant ainsi l'objectif de suppression du cookie. La raison de cette conception est que les cookies sont transmis via les en-têtes HTTP. Le client définit les cookies en fonction du segment Set-Cookie renvoyé par le serveur. Si la suppression des cookies nécessite l'utilisation d'un nouveau Del-Cookie, l'en-tête HTTP deviendra compliqué. En effet, le paramétrage, la mise à jour et la suppression des cookies peuvent être réalisés de manière simple et claire grâce à Set-Cookie.
Après avoir compris le principe, nous pouvons également supprimer les cookies directement via l'en-tête.
header("Set-Cookie:test=1393832059; expires=".gmdate('D, d M Y H:i:s \G\M\T', time()-1));
gmdate est utilisé ici pour générer l'heure moyenne de Greenwich afin d'éliminer l'impact du décalage horaire.
Similitudes et différences entre la session et le cookie
Le cookie stocke les données sur le client et établit une connexion entre l'utilisateur et le serveur. Il peut généralement résoudre de nombreux problèmes, mais. les cookies ont encore quelques limites :
Les cookies sont relativement peu sécurisés et peuvent facilement être volés, ce qui conduit à une usurpation d'identité des cookies
La valeur d'un seul cookie ne peut stocker que jusqu'à 4k
Chaque requête nécessite une connexion réseau. Transmission, occupant la bande passante
La session stocke les données de session de l'utilisateur côté serveur, sans limite de taille. L'identification de l'utilisateur est effectuée via un session_id. Par défaut, l'identifiant de session PHP est enregistré. via un cookie, il est donc stocké à partir d'une certaine Dans une certaine mesure, la visualisation repose sur des cookies. Mais ce n'est pas absolu. L'identifiant de session peut également être implémenté via des paramètres. Tant que l'identifiant de session peut être transmis au serveur pour identification, la session peut être utilisée.
Utiliser la session
L'utilisation de la session en PHP est très simple. Exécutez d'abord la méthode session_start pour ouvrir la session, puis lisez et écrivez la session via la variable globale $. _SESSION.
session_start(); $_SESSION['test'] = time(); var_dump($_SESSION);
La session encodera et décodera automatiquement la valeur à définir, afin que la session puisse prendre en charge n'importe quel type de données, y compris les données et les objets.
session_start(); $_SESSION['ary'] = array('name' => 'jobs'); $_SESSION['obj'] = new stdClass(); var_dump($_SESSION);
Par défaut, les sessions sont stockées sur le serveur sous forme de fichiers. Par conséquent, lorsqu'une session est ouverte sur une page, le fichier de la session sera exclusivement occupé. Cela provoquera d'autres accès concurrents de la page en cours. l'utilisateur ne peut pas exécuter et attendre.
Supprimer et détruire une session
Pour supprimer une valeur de session, vous pouvez utiliser la fonction unset de PHP. Après la suppression, elle sera supprimée de la variable globale $_SESSION et ne pourra pas. être accessible.
session_start(); $_SESSION['name'] = 'jobs'; unset($_SESSION['name']); echo $_SESSION['name']; //提示name不存在
Si vous souhaitez supprimer toutes les sessions, vous pouvez utiliser la fonction session_destroy pour détruire la session en cours. session_destroy supprimera toutes les données, mais le session_id existe toujours.
session_start(); $_SESSION['name'] = 'jobs'; $_SESSION['time'] = time(); session_destroy();
值得注意的是,session_destroy并不会立即的销毁全局变量$_SESSION中的值,只有当下次再访问的时候,$_SESSION才为空,因此如果需要立即销毁$_SESSION,可以使用unset函数。
session_start(); $_SESSION['name'] = 'jobs'; $_SESSION['time'] = time(); unset($_SESSION); session_destroy(); var_dump($_SESSION); //此时已为空
如果需要同时销毁cookie中的session_id,通常在用户退出的时候可能会用到,则还需要显式的调用setcookie方法删除session_id的cookie值。
使用session来存储用户的登录信息
session可以用来存储多种类型的数据,因此具有很多的用途,常用来存储用户的登录信息,购物车数据,或者一些临时使用的暂存数据等。
用户在登录成功以后,通常可以将用户的信息存储在session中,一般的会单独的将一些重要的字段单独存储,然后所有的用户信息独立存储。
$_SESSION['uid'] = $userinfo['uid']; $_SESSION['userinfo'] = $userinfo;
一般来说,登录信息既可以存储在sessioin中,也可以存储在cookie中,他们之间的差别在于session可以方便的存取多种数据类型,而cookie只支持字符串类型,同时对于一些安全性比较高的数据,cookie需要进行格式化与加密存储,而session存储在服务端则安全性较高。
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!