Maison  >  Article  >  développement back-end  >  Cookies et sessions en PHP

Cookies et sessions en PHP

怪我咯
怪我咯original
2017-01-16 11:01:562004parcourir

En PHP, il y a deux fonctions très importantes, notre cookie et notre session, alors comment sont-elles utilisées et quelle est la différence ?

Cet article vous amènera à comprendre les cookies et les sessions

Présentation des cookies

Les cookies sont des données stockées dans le navigateur client. Nous utilisons des cookies pour suivre et stocker les données de l'utilisateur. 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.

Définir la méthode des cookies

setcookie("name",'zhangsan');

setcookie("name",'zhangsan',time() 60);// Réglez la durée de validité du cookie à 60 secondes

//setcookie("visittime",date("y-m-d H:i:s"),time() 60);//Définissez la variable qui enregistre l'expiration du cookie time

Lire la méthode du cookie

$name=$_COOKIE["name"};

Supprimer la méthode du cookie

setcookie("name","" ,time ()-1);//Définissez l'heure de cookie() sur l'heure actuelle moins 1. La fonction time() renvoie l'horodatage actuel exprimé en secondes. En soustrayant le délai d'expiration de 1 seconde, vous obtiendrez l'heure passée, supprimant ainsi le cookie.

Pour supprimer cookiez, il vous suffit de définir le deuxième paramètre de la fonction setcookie() sur une valeur nulle et de définir le délai d'expiration du troisième paramètre du cookie sur une valeur inférieure. que l'heure actuelle du système

Cookies et sessions en PHP

Après avoir compris les cookies, jetons un coup d'œil à la session

La session stocke les données de session de l'utilisateur sur le serveur sans limite de taille et s'effectue via une identification d'utilisateur session_id, l'identifiant de session PHP est enregistré via des cookies par défaut, donc dans une certaine mesure, seesion repose sur les 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);

session encodera et décodera automatiquement la valeur à définir, donc la session peut prendre en charge tout 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 session sera exclusivement occupé. Cela entraînera d'autres accès simultanés de l'utilisateur actuel. être incapable d'exécuter et d'attendre. Ce problème peut être résolu en utilisant le stockage en cache ou en base de données, dont nous parlerons dans certains cours avancés.

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 sera plus accessible.

session_start();$_SESSION['name'] = 'jobs';unset($_SESSION['name']);echo $_SESSION['name'] //Le nom de l'invite n'existe pas

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();

Il est à noter que session_destroy La valeur de la variable globale $_SESSION ne sera pas détruite immédiatement. Ce n'est que lors du prochain accès que $_SESSION sera vide. Par conséquent, si vous devez détruire $_SESSION immédiatement, vous pouvez utiliser la fonction unset.

session_start();$_SESSION['name'] = 'jobs';$_SESSION['time'] = time();unset($_SESSION);session_destroy(); //Il est vide pour le moment

Si vous devez en même temps détruire le session_id dans le cookie, qui peut généralement être utilisé lorsque l'utilisateur se déconnecte, vous devez également appeler explicitement la méthode setcookie pour supprimez la valeur du cookie de session_id.

Utiliser la session pour stocker les informations de connexion de l'utilisateur

La session peut être utilisée pour stocker de nombreux types de données, elle a donc de nombreuses utilisations. Elle est souvent utilisée pour stocker les informations de connexion de l'utilisateur, les données du panier d'achat, ou Certaines données temporaires à usage temporaire, etc.

Une fois que l'utilisateur s'est connecté avec succès, les informations de l'utilisateur peuvent généralement être stockées dans la session. Généralement, certains champs importants seront stockés séparément, puis toutes les informations de l'utilisateur seront stockées indépendamment.

$_SESSION['uid'] = $userinfo['uid'];$_SESSION['userinfo'] = $userinfo;

De manière générale, les informations de connexion peuvent être stockées dans la session, ou peuvent être stockés dans des cookies. La différence entre eux est que la session peut facilement accéder à plusieurs types de données, tandis que les cookies ne prennent en charge que les types de chaînes. Dans le même temps, pour certaines données avec une sécurité plus élevée, les cookies doivent être formatés et stockés cryptés. le stockage des sessions côté serveur est plus sécurisé.

header("content-type:text/html; charset=utf-8");

session_start();//Supposons que l'utilisateur se connecte avec succès et obtienne les données utilisateur suivantes $userinfo = array(

'uid' => 100,

'name' => 'liu',

'email' => '123456789@qq.com',

'sex' => 'man',

'age' => '23');

/* Enregistrer les informations de l'utilisateur dans la session*/

$_SESSION['uid'] = $userinfo['uid'];

$_SESSION['name'] = $userinfo['name'];

$_SESSION ['userinfo '] = $userinfo;

//* Un moyen simple de sauvegarder les données utilisateur dans les cookies*/

$secureKey = 'php';

//Clé de cryptage $ str = serialize($userinfo);

//Sérialiser les informations utilisateur //Avant de chiffrer les informations utilisateur

$str = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5( $secureKey), $str, MCRYPT_MODE_ECB ));

//Une fois les informations utilisateur cryptées//Stocker les données utilisateur cryptées dans un cookie

setcookie('userinfo', $str) ;

?>

Cookies et sessions en PHP

Enfin, jetons un coup d'œil à la plus grande différence entre session et cookie :

Tout d'abord, la session est la session. Les informations sont stockées sur le serveur, et les informations du client sont transmises via un identifiant de session. En même temps, une fois que le serveur a reçu l'identifiant de session, il fournit des ressources d'informations de session pertinentes basées sur cet identifiant

Deuxièmement, le cookie combine toutes les informations avec The. La forme de texte est enregistrée sur le client et gérée et maintenue par le navigateur

Troisièmement, puisque la session est stockée sur le serveur, tous les utilisateurs distants ne peuvent pas modifier le contenu du fichier de session, et le cookie

est pour le client Stockage final, toutes les sessions sont bien plus sécurisées que les cookies, et bien sûr il y a de nombreux avantages, comme un contrôle facile, un stockage défini par le client, etc. (stocké dans la base de données)...


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