La différence entre les cookies et les sessions en php et une explication détaillée de l'utilisation des cookies et des sessions

怪我咯
Libérer: 2023-03-13 10:50:02
original
1170 Les gens l'ont consulté

Cet article présente principalement la différence entre les cookies et la session en PHP et les informations pertinentes sur le résumé de l'utilisation des cookies et de la session. Il est très bon et a une valeur de référence. Les amis dans le besoin peuvent s'y référer

Plus précisément, les cookies sont enregistrés sur le "client", tandis que les sessions sont enregistrées sur le "serveur"

Les cookies sont étendus par http Le


cookie mis en œuvre par le protocole comprend principalement : le nom, la valeur, l'heure d'expiration, le chemin et le domaine


Si le cookie n'est pas paramétré avec une

vie ; cycle, puis Ces cookies sont fermés à la fermeture du navigateur. Ces cookies sont généralement stockés en mémoire plutôt que sur le disque dur. Si un cycle de vie est défini, l'inverse est vrai. fermés. Ces cookies restent valables jusqu'à ce que le délai d'expiration fixé soit dépassé.

la session stocke les informations sous une forme semblable à une table de hachage,


Lorsque le programme doit créer une session pour la demande d'un client, le serveur vérifie d'abord la demande du client. contient-il un identifiant de session


(appelé identifiant de session) ? S'il est inclus, cela signifie qu'une session a déjà été créée pour ce client, et le serveur récupérera cette session et l'utilisera en fonction. l'identifiant de session. (S'il ne peut pas être récupéré, un nouveau sera créé.) Si la demande du client ne contient pas d'identifiant de session, créez une session pour ce client et générez un identifiant de session associé à cette session. L'identifiant de session doit être une valeur qui ne sera pas répétée. , et il n'est pas facile de trouver le modèle pour contrefaire la

chaîne . Cet identifiant de session sera renvoyé au client dans cette réponse pour stockage. La méthode de sauvegarde de cet identifiant de session peut utiliser des cookies, de sorte que pendant le processus d'interaction, le navigateur puisse envoyer automatiquement cette identification au serveur selon les règles. Généralement, le nom de ce cookie est similaire à SEEESIONID. Mais les cookies peuvent être artificiellement désactivés, et il doit exister d'autres mécanismes pour toujours transmettre l'identifiant de session au serveur lorsque les cookies sont désactivés.

Avantages et inconvénients :

1. Les données des cookies sont stockées sur le navigateur du client et les données de session sont placées. sur le serveur supérieur.


2. Les cookies ne sont pas très sûrs. D'autres peuvent analyser les cookies stockés localement et les tromper

La session doit être utilisée pour des raisons de sécurité.

3. La session sera enregistrée sur le serveur dans un certain délai. Lorsque l'accès augmente, cela consommera davantage de performances de votre serveur

Afin de réduire les performances du serveur, COOKIE doit être utilisé.


4. Les données enregistrées par un seul cookie ne peuvent pas dépasser 4K. De nombreux navigateurs limitent un site à enregistrer jusqu'à 20 cookies.


5. Suggestion donc personnelle :

Stockez les informations importantes telles que les informations de connexion en tant que SESSION


Si d'autres informations doivent être conservées, elles peuvent être placé dans COOKIE

Récapitulatif de l'utilisation de la Session et des Cookies :

La Session et les cookies sont tous deux en

asp. Net Objets intégrés, quant à leurs différences, je n'entrerai pas dans les détails ici Parlons maintenant de choses plus pratiques :

Nous savons que les sites Web ont un système de gestion backend. , qui comprend la connexion et Pour quitter les deux fonctions, lors de la connexion, nous enregistrons souvent les informations de l'utilisateur dans la session ou dans le cookie pour une utilisation ultérieure. Alors, à quoi devons-nous faire attention lors de la connexion ?


1. Stockez certaines éléments sensibles dans la session. Des éléments moins sensibles peuvent être stockés dans la session ou les cookies. Par exemple, les noms d'utilisateur ne sont pas très sensibles, mais certains navigateurs ne prennent pas en charge l'utilisation des cookies. nous le sauvegarderons donc dans la session, mais la session se perd parfois facilement sur le serveur, nous pouvons donc l'utiliser en conjonction avec des cookies, c'est-à-dire lorsque la session est perdue, si le cookie est encore dans la période de validité que nous avons fixée À l'intérieur, vous pouvez à nouveau retirer la valeur du cookie et la mettre dans la session, nous ferions donc mieux d'utiliser session et cookie pour enregistrer le nom d'utilisateur et d'autres informations en même temps ou dans le

fichier de configuration

le code est le suivant :

<sessionState timeout="2" mode="StateServer" />
Copier après la connexion
peut également être utilisé pour résoudre le problème de perte de session


2. Nous espérons que le contexte la direction invalidera la session et se reconnectera s'il n'y a pas d'opération pendant une longue période. Utilisez session.timeout=5, en minutes, ce qui signifie que s'il n'y a pas d'autre opération dans les 5 minutes, elle sera invalide, ou vous pouvez le faire. configurer dans le fichier de configuration


3. Définition de la durée de validité des cookies


httpCookie.Expires = DateTime.Now.AddMinutes(2);


La période de validité des cookies est de 2 minutes


4. Lorsque vous jugez si vous avez l'autorisation d'accéder à la page Web, vous pouvez juger. comme suit :

if (Request.Cookies["httpCookie"] != null)
{
Session["admin"] = Request.Cookies["httpCookie"].Values["admin"].ToString();
}
if (Session["admin"] == null)
{
this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert(&#39;请重新登 录&#39;);location.href=&#39;logins.aspx&#39;</script>");
}
Copier après la connexion

Ce qui suit concerne la sortie. Ce qui devrait être mieux fait

1. la session et le cookie doivent être effacés à la sortie. Parlons maintenant brièvement des différences entre plusieurs méthodes de session :


Session.clear() : signifie effacer toutes les valeurs clés de session dans la session, mais la session existe toujours, équivalent à Session.RemoveAll()

Session["admin"] =null : Indique que la valeur de la clé spécifiée sera effacée et libérée. Elle est différente de session["admin"]="". Elle est effacée, mais la session n'est pas libérée. C'est équivalent à session.Remove(. "name");

Session.Abandon() supprime l'objet Session actuel, et ce sera une nouvelle session la prochaine fois.

La principale différence est que lors de l'utilisation de Session.Abandon, la méthode Session_End (en mode InProc) est appelée. La méthode Session_Start sera déclenchée lors de la prochaine requête. Session.Clear efface uniquement toutes les données de la session et ne termine pas la

Session, donc ces méthodes ne seront pas appelées. La méthode Abandon est utilisée pour terminer activement la session si cette méthode ne l'est pas. appelé, lorsque Après l'expiration de la session, la session en cours sera également automatiquement terminée.

2. Voyons comment effacer les cookies

A. tpCookie cookie = System.Web.HttpContext.Current.Request. Cookies .Get("tuser");

cookie.Expires = DateTime.Now.AddDays(-1);
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);

B. tpCookie httpCookie = Request.Cookies["httpCookie"];

httpCookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(httpCookie) ;

Les deux méthodes AB peuvent être utilisées

3. Effacez donc simplement la valeur actuelle de session, c'est-à-dire Session["admin'. ]=null Voilà. Les cookies peuvent être effacés selon la méthode ci-dessus

Suggestions et commentaires :

1. créer un Il est préférable d'écrire l'heure sur la page de déconnexion

2. Quelle que soit l'opération en cours, si vous pouvez utiliser If pour juger si elle est nulle, faites de votre mieux pour la juger pour empêcher l'apparition d'un pointeur nul Exception

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal