Maison >développement back-end >tutoriel php >Introduction détaillée à l'exemple de code du contrôle de session php
http Le protocole est apatride, et pour chaque requête, le serveur ne peut pas distinguer les utilisateurs. Le contrôle de session PHP donne à l'utilisateur une clé (une chaîne session cryptée), qui est également une preuve de l'identité de l'utilisateur, le serveur stocke la boîte (base de données, base de données mémoire ou Made using files), la boîte contient. les différentes informations variables de l'utilisateur.
Où est cette clé ?
1, url requête chaîne
2, navigateur cookie
<?php //page1.php 启动一个会话并注册一个变量session_start(); $_SESSION['user_var'] = "hello,codekissyoung!"; //这里的可以将$_SESSION理解为用户的箱子,实际的实现是php在服务器端生成的小文件 ?>
<?php //page2.php session_start(); echo $_SESSION['user_var']; //通过钥匙访问自己的箱子内的变量 $_SESSION['user_var'] = "bey,codekissyoung!";
<?php//page3.php 销毁钥匙,一般在用户注销时,访问page3.php文件session_start(); session_destroy();?>
Posez une question, où est la clé ? N'avez-vous pas vu l'opération consistant à donner la clé à l'utilisateur ?
Cette opération est effectuée pour nous par PHP en coulisses. Puisque vous visitez page1.php et exécutez le programme session_start();, PHP le générera en fonction de certaines conditions du moment (IP de l'utilisateur, numéro de navigateur, heure). , etc.) Une variable PHPSESSID. Une fois la réponse http renvoyée au client, ce PHPSESSID est déjà stocké dans le cookie de votre navigateur. Chaque fois que vous visitez à nouveau ce nom de domaine, le PHPSESSID sera envoyé au serveur. Ce PHPSESSID est la clé utilisateur dont je parle ici.
Encore une question, la sécurité de ce PHPSESSID, est-il facile à voler, est-il facile à falsifier, est-il facile à falsifier ?
L'utilisation de HTTPS empêche toute falsification. N'utilisez pas PHPSESSID, mais générez une clé secrète pour l'utilisateur afin d'éviter toute falsification. Quant à savoir s'il est facile de le voler, il n'y a vraiment aucune recherche à ce sujet. Par exemple, si votre ordinateur est connecté à Internet et que des pirates informatiques envahissent votre ordinateur.
设置cookiesetCookie('key','value',time()+3600); 删除cookiesetCookie('key','',time()-1);
Authentification unique : partager une authentification unique entre plusieurs sous-systèmes Avec un système d'authentification utilisateur, vous pouvez accéder à tous les sous-systèmes en vous connectant à un seul endroit.
Imaginez ce scénario : supposons que les environnements php des serveurs A et B sont les mêmes. L'utilisateur a obtenu sa clé sur le serveur A, puis il a pris la clé pour accéder au serveur B. Connaît-il le serveur B ?
Evidemment non, la clé générée par le serveur A n'est pas reconnue par le serveur.
Solution : que l'utilisateur accède à A ou à B, je stocke la clé générée dans C (la même base de données ou le même système de cache). Lorsque l'utilisateur accède à nouveau à A ou à B, A et B demanderont à C : Ceci. La clé de l'utilisateur est-elle correcte ? S'il est correct, l'utilisateur peut utiliser la case stockée en A ou B.
<?php session_regenerate_id(); //重置 session 字符 $session_info=array('uid'=>$uid,'session'=>session_encrypt(session_id().time())); //下一步将,$session_info 存到 C 中
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!