Maison  >  Article  >  développement back-end  >  Que dois-je faire si php ne peut pas passer la session ?

Que dois-je faire si php ne peut pas passer la session ?

藏色散人
藏色散人original
2021-10-15 09:17:001945parcourir

Solution au problème selon lequel PHP ne peut pas transférer de session : 1. Activez les cookies dans le client ; 2. Vérifiez les problèmes du navigateur et accédez aux cookies ; 3. Activez session.use_trans_sid dans php.ini.

Que dois-je faire si php ne peut pas passer la session ?

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

Solution au problème selon lequel SESSION ne peut pas être transmise d'une page à l'autre en PHP

Amis qui ont utilisé SESSION en PHP Vous pouvez rencontrer un tel problème, la variable SESSION ne peut pas être transmise entre les pages. Cela m'a troublé pendant plusieurs jours, et j'ai finalement réfléchi et résolu le problème en recherchant des informations. Je pense que les raisons de ce problème sont les suivantes :
1. Les cookies sont désactivés sur le client
2 Il y a un problème avec le navigateur et les cookies sont temporairement inaccessibles
3. session.use_trans_sid = 0 dans php.ini. ou lors de la compilation L'option --enable-trans-sid n'est pas activée

Pourquoi cela se produit-il ? Laissez-moi vous expliquer ci-dessous :

La session est stockée côté serveur (la session est stockée sous forme de fichier par défaut). Selon l'identifiant de session fourni par le client, le fichier de l'utilisateur est obtenu et la valeur de la variable est obtenue. L'identifiant de session peut utiliser le cookie du client ou Http1.1. La Query_String du protocole (la partie après le "?" de l'URL consultée) est envoyée au serveur, puis le serveur lit le répertoire de 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 réexécuter session_start() ; un autre fichier de session sera généré, et l'identifiant de session correspondant sera généré en conséquence. En utilisant cet identifiant de session, vous ne pourrez pas récupérer le premier fichier de session mentionné. ci-dessus, 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.
La session en PHP utilise le cookie du client pour enregistrer l'identifiant de session par défaut, 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'avantage 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".

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 l'option --enable-trans-sid pendant la compilation. pour laisser PHP 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 session_id dans un fichier, une base de données, etc., et appelez-le manuellement pendant le processus interpage.

Illustrons avec un exemple :

s1.phps2.php

337e7f85b79fe769406ebd5d6dcfa794Page suivante5db79b134e9f6b82c0b36e0489ee08ed " ;
écho ​ $url ;                                       ?>

ff042592b05b4492bb7fc56cfc78f15d

Exécutez le code ci-dessus. Si le cookie client est normal, vous devriez pouvoir obtenir le résultat "République populaire de Chine".
Maintenant, si vous fermez manuellement le cookie sur le client et que vous l'exécutez à nouveau, vous risquez de ne pas obtenir le résultat. Si vous ne parvenez pas à obtenir le résultat, alors "définissez session.use_trans_sid = 1 dans php.ini ou activez l'option --enable-trans-sid lors de la compilation", et vous obtiendrez le résultat "République populaire de Chine"


C'est la façon ci-dessus de dire 1.

Parlons de l'approche 2 ci-dessous :

Le code modifié est le suivant :

s1.php


44cf07239ea45fa8ba89227b9b816ed7Page suivante5db79b134e9f6b82c0b36e0489ee08ed " ;
écho ​ $url ;                                         ?>


s2.php méthode 3 : login.html

d34d42b93eac807def0bda9ae6c5fc9c  

 

698007848f8a4f233e9ce18930dca96c998d50a0c7369ebfd1e5e165aa8909f9a1d37a9b961fbe7a1e2f1877ca350d676fd8707202eeca0a77be8d22bbfc08d7connectez-vous5db79b134e9f6b82c0b36e0489ee08ed " ;
Mourir ();
}

?>

Veuillez également désactiver le test des cookies, nom d'utilisateur : laogong mot de passe : 123. Ceci permet d'enregistrer l'identifiant de session via un fichier, le fichier est : e:/tmp/phpsid.txt, veuillez décider du nom ou du chemin du fichier selon votre propre système.

Quant à la méthode base de données, je ne donnerai pas d'exemple, elle est similaire à la méthode fichier.

Pour résumer, les méthodes ci-dessus ont une chose en commun, qui est d'obtenir l'identifiant de session sur la page précédente, puis de trouver un moyen de le transmettre à la page suivante. Ajoutez le code session_id (identifiant de session transmis) avant le. session_start(); code sur la page suivante);

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!

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