Maison  >  Article  >  développement back-end  >  Introduction détaillée à l'exemple de code du contrôle de session php

Introduction détaillée à l'exemple de code du contrôle de session php

黄舟
黄舟original
2017-03-14 16:29:551475parcourir


Aperçu

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

utilisations de session php traditionnelles

<?php
//page1.php 启动一个会话并注册一个变量session_start();
$_SESSION[&#39;user_var&#39;] = "hello,codekissyoung!";
//这里的可以将$_SESSION理解为用户的箱子,实际的实现是php在服务器端生成的小文件
?>
<?php
//page2.php
session_start();
echo $_SESSION[&#39;user_var&#39;];
//通过钥匙访问自己的箱子内的变量
$_SESSION[&#39;user_var&#39;] = "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.

Enregistrer la clé secrète générée dans le cookie du navigateur

设置cookiesetCookie(&#39;key&#39;,&#39;value&#39;,time()+3600);
删除cookiesetCookie(&#39;key&#39;,&#39;&#39;,time()-1);

Réaliser une authentification unique : partage de session

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(&#39;uid&#39;=>$uid,&#39;session&#39;=>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!

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