Maison >développement back-end >tutoriel php >Comment comprendre le contrôle de session en PHP

Comment comprendre le contrôle de session en PHP

一个新手
一个新手original
2017-09-12 10:07:331397parcourir

Le contrôle de session est une méthode de communication qui permet de suivre les utilisateurs. L'utilisation du contrôle de session repose principalement sur les points suivants : en raison de la nature apatride du protocole http, il est impossible d'établir une association entre deux requêtes via le protocole ; pour les pages ordinaires Pour les méthodes de transfert de données entre get et post, il gère principalement le transfert de paramètres et la saisie de données simples entre les deux pages. Pour plusieurs pages du site Web d'un utilisateur, une variété de données différentes, il peut y avoir Différentes autorisations conduisent à différentes pages, différentes méthodes de fonctionnement, etc. L'utilisation de get et post est très lourde.

1. Méthode des cookies

Afin de suivre les utilisateurs, les utilisateurs doivent être marqués, l'idée de ​​cookies Autrement dit, lorsqu'un utilisateur visite la première page du site Web, en définissant l'identifiant des informations de l'utilisateur, le serveur Web les stocke sur l'ordinateur de l'utilisateur sous forme de fichiers texte. Ces fichiers sont ce que l'on appelle des cookies. stockées sous forme de paires clé-valeur, lorsque l'utilisateur visite la deuxième page du site Web, les informations du fichier cookie seront accessibles au serveur via les informations d'en-tête http et les informations de l'utilisateur seront revérifiées, évitant ainsi d'avoir à saisir l'utilisateur pour chaque visite. Les informations peuvent déterminer si les visites entre plusieurs pages sont effectuées par le même utilisateur.

Fonction pour définir les informations sur le cookie : setcookie($key, $value, $expire, $path, $domain, $secure).

Les paramètres sont : la clé, la valeur, le délai d'expiration (horodatage UNIX, la valeur par défaut est 0, ce qui signifie que le cookie disparaît à la fermeture du navigateur), le chemin d'accès au cookie. Après paramétrage, le script sous. ce chemin sur le serveur peut accéder aux cookies (la valeur par défaut est le répertoire racine), le nom de domaine pour accéder aux cookies, seule la page du site Web sous le nom de domaine (comme www.example.com) peut accéder aux cookies et activer les cookies, qu'elle soit est une connexion sécurisée https.

Par exemple, après avoir soumis le formulaire par courrier, enregistrez certaines informations.

<?php    
    if(isset($_POST)){        
    $time = time();        
    setcookie(&#39;user&#39;, $_POST[&#39;user&#39;], $time+3600);  // 时间参数需要比当前时间点大,以表示cookie信息的有效时间        s
    etcookie(&#39;data&#39;, array(1,2,3), $time+1200);  // 可以存放各种数据     }
   保存cookie成功后,可直接到$_COOKIE超全局数组中以键名取得该值,非常方便,如echo $_COOKIE[&#39;user&#39;],基本的数据类型都支持       cookie的删除仍是通过setcookie进行,最好写成将时间提前的形式,或者直接写一个键名,比如在用户点击退出时进行该项操作
 setcookie(&#39;user&#39;, &#39;&#39;, time()-200);  // 时间提前,相对当前时间 
 setcookie(&#39;user&#39;);  // 简写,只写键名
  2.session方式

La session est similaire au cookie, sauf que les informations ont été initialement stockées du côté de l'utilisateur, mais maintenant, il est stocké côté serveur, mais dans Le client génère un identifiant d'identification, qui est enregistré par défaut dans le cookie local de l'utilisateur, de sorte que la session est liée au cookie. De cette façon, lorsque l'utilisateur visite pour la première fois, les informations sont stockées sur le serveur Web et une chaîne de longueur fixe (identifiant de session) est attribuée de manière aléatoire à l'utilisateur. Lorsque l'utilisateur visite d'autres pages à l'avenir, il le fait. utilisera cet identifiant pour trouver les données utilisateur correspondantes sur le serveur. Informations, afin que l'utilisateur puisse être suivi. Une session qui utilise des cookies est appelée une session basée sur les cookies.

Mais les utilisateurs peuvent configurer leur navigateur pour désactiver les cookies (bien que cela ne soit généralement pas fait). Certains sites Web obligeront les utilisateurs à activer les cookies après avoir détecté que les cookies sont désactivés, mais il existe une telle situation. la méthode basée sur les cookies ne fonctionnera pas. Pour le moment, elle peut être transmise dans le formulaire get avec un identifiant de session après l'URL. Bien sûr, elle peut également être transmise via la publication http.

Utilisation de la session

Tout d'abord, utilisez session_start() pour ouvrir une session. Notez que pour ce type de fonction réseau, aucune sortie n'est autorisée devant elle, même s'il y a un espace devant l'identifiant

Ensuite, enregistrez la variable de session, c'est-à-dire accédez aux informations utilisateur ou aux données utiles. utilisez n'importe quelle fonction, stockez-la simplement directement dans le tableau super global $ _SESSION, tel que $_SESSION['user'] = $_POST[['user'], ces données seront enregistrées dans un fichier sur le serveur, ou bien sûr, il peut s'agir de cache (memcache, redis).

Lors du passage à d'autres pages, la session doit d'abord être ouverte sur d'autres pages, toujours en utilisant session_start(). Si la session est déjà ouverte, cette fonction renvoie la session en cours, sinon, rouvrez-la.

Enfin, si l'utilisateur quitte ou détruit la conversation pour une raison quelconque, ces variables doivent être déconnectées. Divisée en quatre étapes :

1.仍然是先开启会话,或者是跳转到其他页面时,再次返回已经存在的会话,需要确保前面没有输出
    session_start();   // 开启或返回一个会话
 
2.清空$_SESSION数组中的相关变量
  unset($_SESSION[&#39;robert&#39;])  // 销毁某一个变量  $_SESSION = array();  // 或者一次性全部销毁会话变量
3.清除保存在客户端的cookie,别忘了session id还在用户计算机上面
if(
isset(
$_COOKIE[
session_name
()])){        
unset(
$_COOKIE[
session_name()]);    
//
session_name()获取sesion的名,session id也是以名和值的形式存储的
    }
4.彻底销毁存储到服务器的信息
 session_destroy();

Après quatre étapes, une séance se termine.

3. Les étapes de base pour utiliser le contrôle de session sont les suivantes :

1) Démarrer une session

Appelez simplement la fonction session_start() Pour les fonctions spécifiques de la fonction, veuillez vous référer à la documentation PHP. A noter que cette fonction doit être appelée au début du script en utilisant la session. Dans le cas contraire, toutes les informations enregistrées dans la session ne seront pas disponibles dans le script. En plus d'appeler manuellement la fonction session_start(), vous pouvez également configurer automatiquement PHP pour l'appeler automatiquement. Vous pouvez la rechercher sur Google.

2) Enregistrez une variable de session

À partir de PHP4.1, les variables de session sont stockées dans le tableau super global $_SESSION. Pour créer une variable de session, il vous suffit de définir un élément dans le tableau, tel que $_SESSION['myvar'] = 5;

 3) Utiliser une variable de session

Il est très simple d'utiliser une variable de session. Utilisez simplement le tableau $_SESSION pour accéder à la variable de session enregistrée. Par exemple, echo $_SESSION['mywar']; Avant d'utiliser une session, vous devez d'abord utiliser la fonction session_start() pour démarrer une session.

4) Désenregistrer les variables et détruire les sessions

Pour désenregistrer les variables, utilisez simplement unset, tel que unset($_SESSION['myvar']) si vous souhaitez détruire toutes les variables de session en même temps. , vous pouvez utiliser unset ($_SESSION); Lorsque vous avez fini d'utiliser une session, vous devez d'abord désenregistrer toutes les variables, puis appeler session_destroy() pour effacer l'ID de 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!

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