Maison >développement back-end >tutoriel php >Compréhension approfondie du contrôle de session en php

Compréhension approfondie du contrôle de session en php

黄舟
黄舟original
2017-09-09 09:45:041446parcourir

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信息的有效时间    
    setcookie(&#39;data&#39;, array(1,2,3), $time+1200);  // 可以存放各种数据 
    }

La suppression des cookies se fait toujours via setcookie Il est préférable d'écrire l'heure à l'avance, ou d'écrire. directement un nom de clé, tel que Cette opération est effectuée lorsque l'utilisateur clique pour quitter

   setcookie(&#39;user&#39;, &#39;&#39;, time()-200);  // 时间提前,相对当前时间    
   setcookie(&#39;user&#39;);  // 简写,只写键名


2. Méthode de session

La session est similaire au cookie, sauf que les informations ont été initialement stocké du côté de l'utilisateur, mais est maintenant stocké dans le service, mais un identifiant d'identification est généré du côté de l'utilisateur. Cet identifiant est enregistré par défaut dans le cookie local de l'utilisateur, la session est donc 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. Quatre étapes :

1. Ouvrez toujours la session en premier, ou lorsque vous accédez à d'autres pages, revenez à la session existante. Vous devez vous assurer qu'il n'y a pas de sortie précédente

    session_start();   // 开启或返回一个会话

. 2 .Effacez les variables pertinentes dans le tableau $_SESSION

 unset($_SESSION[&#39;robert&#39;])  // 销毁某一个变量  
  $_SESSION = array();  // 或者一次性全部销毁会话变量

3. Effacez les cookies enregistrés sur le client, n'oubliez pas que l'identifiant de session est toujours sur l'ordinateur de l'utilisateur

 if(isset($_COOKIE[session_name()])){        
unset($_COOKIE[session_name()]);    // session_name()获取sesion的名,session id也是以名和值的形式存储的
    }

4. Détruisez complètement les informations stockées dans le serveur

  session_destroy();

Après avoir terminé ces quatre étapes, une session est terminée.

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

C'est très facile à utiliser une variable de session Simple, utilisez simplement le tableau $_SESSION pour accéder aux variables de session enregistrées, telles que echo $_SESSION['mywar'] affichera 5. 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