Maison  >  Article  >  développement back-end  >  Comment résoudre le problème de la perte d'une session PHP entre plusieurs pages

Comment résoudre le problème de la perte d'une session PHP entre plusieurs pages

PHPz
PHPzoriginal
2020-09-25 15:43:442924parcourir

Solution à la perte de session php sur plusieurs pages : 1. Définissez "session.use_trans_sid=1" dans "php.ini" ; 2. Transmettez manuellement l'identifiant de session via l'URL ou le formulaire masqué ; Utilisez Enregistrez "session_i" sous la forme d'un fichier ou d'une base de données.

Comment résoudre le problème de la perte d'une session PHP entre plusieurs pages

Recommandé : "Tutoriel vidéo PHP"

Introduction :

SESSION est perdue en PHP (Ne peut pas être transmis d'une page à l'autre) Solution

De manière générale, les points suivants peuvent entraîner la perte de SESSION :

1 Les cookies sont désactivés sur le client

2. . Le navigateur ne peut pas enregistrer Get cookie

3. Session.use_trans_sid=0 dans php.ini ou l'option –enable-trans-sid n'est pas activée lors de la compilation

La session est stockée sur le. côté serveur (par défaut, il est stocké dans un fichier), récupérez le fichier de l'utilisateur en fonction de l'identifiant de session fourni par le client,

pour obtenir la valeur de la variable, l'identifiant de session peut utiliser le cookie du client ou la Query_String du protocole Http1.1

(qui est l'URL visitée (la partie après "?") est transmise au serveur, puis le serveur lit le répertoire Session... En d'autres termes,

session id est la carte d'identité permettant d'obtenir la variable de session stockée sur le service. Lorsque le code session_start(); est exécuté,

génère un fichier de session sur le serveur, puis génère également un identifiant de session correspondant de manière unique

définit la variable de session sous une certaine forme. est stocké dans le fichier de session qui vient d'être généré. Grâce à l'identifiant de session,

peut récupérer les variables définies. Après avoir traversé la page, pour utiliser la session, vous devez à nouveau exécuter session_start() ;

générera un autre fichier de session, correspondant auquel l'identifiant de session correspondant sera généré

Utilisation. cet identifiant de session est Les variables du premier fichier de session mentionné précédemment ne peuvent pas être récupérées,

car cet identifiant de session n'est pas la "clé" pour l'ouvrir. Si vous ajoutez le code session_id($session id); avant session_start();

, aucun nouveau fichier de session ne sera généré, et

lira directement le fichier de session correspondant à cet identifiant.

La session en PHP utilise le cookie du client pour enregistrer l'identifiant de session par défaut

Ainsi, lorsqu'il y a un problème avec le cookie du client, cela affectera la session. Il faut noter que :

la session ne doit pas nécessairement s'appuyer sur des cookies, ce qui fait aussi l'éclat des sessions par rapport aux cookies.

Lorsque les cookies du client sont désactivés ou en cas de problème, PHP attachera automatiquement l'identifiant de session à l'URL

De cette façon, la variable de session peut être utilisée sur plusieurs pages de la session. identifiant. Mais cette pièce jointe a aussi certaines conditions,

c'est-à-dire "session.use_trans_sid = 1 dans php.ini ou l'option –enable-trans-sid est activée lors de la compilation".

Comprenant les principes ci-dessus, mettons maintenant de côté les cookies et utilisons les sessions. Il existe trois manières principales :

1. Définissez session.use_trans_sid = 1 dans php.ini ou activez-le pendant la compilation. . Avec l'option –enable-trans-sid,

permet à PHP de transmettre automatiquement l'identifiant de session entre les pages.

2. Transmettez manuellement la valeur via l'URL et transmettez l'identifiant de session via le formulaire masqué.

3. Enregistrez le session_id dans un fichier, une base de données, etc., et appelez-le manuellement pendant le processus inter-pages.

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