Les raisons de la perte de session php sont : 1. Les cookies sont désactivés sur le client ; 2. Le navigateur ne peut pas accéder aux cookies ; 3. "session.use_trans_sid=0" dans php.ini n'est pas activé lors de la compilation. Option "-activer-trans-sid".
L'environnement d'exploitation de cet article : système Windows 7, version PHP 8, ordinateur Dell G3.
L'auteur a accidentellement reçu un problème. Le client a dit que la session du site Web était toujours perdue. Ensuite, je l'ai cherché pendant longtemps et je n'ai jamais trouvé la raison. Finalement, j'ai découvert que le temps était écoulé. le serveur ne correspondait pas à l'heure du réseau, ce qui a provoqué le problème. L'utilisateur ne peut pas se connecter ou se déconnecte immédiatement. Au cours du processus, j'ai découvert qu'il pouvait y avoir d'autres raisons, que je vais montrer ici et partager avec vous.
De manière générale, la SESSION est perdue à cause des points suivants :
1. Les cookies sont désactivés sur le client
2. access 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 côté serveur (par défaut, elle est stockée dans. un fichier), selon l'identifiant de session fourni par l'identifiant du client pour récupérer le fichier de l'utilisateur et obtenir la valeur de la variable. L'identifiant de session peut être envoyé au serveur à l'aide du cookie du client ou du Query_String du protocole Http1.1 (. c'est-à-dire la partie après le "?" de l'URL consultée), puis le serveur lit la table des matières de la session…….
En d'autres termes, l'identifiant de session 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é, un fichier de session est généré sur le serveur et un identifiant de session correspondant de manière unique est généré. La variable de session est définie pour être stockée dans le fichier de session qui vient d'être généré sous une certaine forme. Grâce à l'identifiant de session, les variables définies peuvent être récupérées.
Après avoir traversé la page, pour utiliser la session, vous devez exécuter session_start(); un autre fichier de session sera généré, correspondant auquel l'identifiant de session correspondant sera généré. En utilisant cet identifiant de session, vous ne pouvez pas. récupérez la variable mentionnée précédemment dans le premier fichier de session, 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();, un nouveau fichier de session ne sera pas généré, et le fichier de session correspondant à cet id sera lu directement. Par défaut, la session en PHP utilise le cookie du client pour enregistrer l'identifiant de session, donc 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 est aussi l'éclat de la session par rapport aux cookies. Lorsque les cookies du client sont désactivés ou qu'il y a un problème, PHP attachera automatiquement l'identifiant de session à l'URL, afin que la variable de session puisse être utilisée sur plusieurs pages via l'identifiant de session.
Mais cette pièce jointe a aussi certaines conditions, à savoir "session.use_trans_sid = 1 dans php.ini ou l'option –enable-trans-sid est activée lors de la compilation". Comprenez 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 –enable-trans- lors de la compilation. L'option 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.
[Apprentissage recommandé : "Tutoriel vidéo PHP"]
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!