L'exemple de cet article décrit la solution aux sessions et cookies non valides dans thinkphp. Partagez-le avec tout le monde pour votre référence. L'analyse spécifique est la suivante :
Description du problème :
Il n'y a aucun problème avec la session et le cookie lors du débogage local. J'utilise la session pour enregistrer les informations du compte de connexion actuel après le téléchargement. le serveur, j'ai trouvé un saut Après ça la session n'existe plus, pourquoi ? La session de sortie sur la page actuelle existe.
Je rencontre ce problème depuis trois jours Parce que je suis autodidacte, il n'y a pas de professeur pour demander conseil, et il n'y a pas beaucoup de gens autour de moi qui le sont. faire du PHP, donc c'est vraiment tragique, alors... Baidu et beaucoup de gens sur Baidu disent des bêtises, et il n'y a rien qui puisse résoudre le problème. Après trois jours de modification, j'ai finalement trouvé la cause profonde. que la majorité des serveurs qui prennent en charge thinkphp sont des systèmes Linux et que notre programmation est fondamentalement la même que celle de Windows, cela entraînera un problème d'en-tête de nomenclature, et PHP ne peut pas analyser l'en-tête de nomenclature, mais le supprime directement, provoquant la disparition de la session et des cookies. inutilisable.
Solution :
Qu'est-ce que la tête de nomenclature ? Dans un fichier codé en UTF-8, la nomenclature se trouve dans l'en-tête du fichier, occupant trois octets, ce qui est utilisé pour indiquer que le fichier appartient au codage UTF-8. Il existe désormais de nombreux logiciels qui reconnaissent l'en-tête de la nomenclature, mais là. Il y en a encore qui ne peuvent pas reconnaître l'en-tête de la nomenclature, comme PHP. L'en-tête de la nomenclature ne peut pas être reconnu, c'est pourquoi une erreur se produit après la modification de l'encodage UTF-8 avec le Bloc-notes.
Les moyens simples de supprimer l'en-tête de la nomenclature. sont les deux suivants :
1, Comment supprimer l'en-tête de nomenclature avec editplus
Une fois l'éditeur ajusté au format d'encodage UTF8, il y aura une chaîne de caractères cachés (c'est-à-dire BOM) devant le fichier enregistré, qui est utilisé par l'éditeur pour identifier si le fichier est codé en UTF8
Exécutez Editplus, cliquez sur Outils, sélectionnez Préférences, sélectionnez le fichier, sélectionnez Identification UTF-8 pour toujours supprimer. la signature, puis modifiez et enregistrez le fichier PHP sans BOM .
2. Méthode Ultraedit pour supprimer l'en-tête de BOM
Après avoir ouvert le fichier, sélectionnez le format d'encodage dans l'option Enregistrer sous (. utf-8 sans en-tête BOM), confirmez et tout ira bien. Que diriez-vous de le supprimer ? L'en-tête bom est très simple
Parlons des informations de nomenclature de utf8. Le fichier PHP lui-même au format UTF-8 avec BOM. La manière tronquée chinoise des pages ordinaires n'est généralement pas causée par cette raison.
header("Content-type: text/html; charset=utf-8");
Cette phrase contrôle la méthode d'encodage de la page de sortie HTML. disponible uniquement lorsque "Notepad" est utilisé pour le stocker au format UTF-8 sous WINDOWS. Vous pouvez utiliser WINHEX pour convertir les 2 premiers octets de suppression
Dans les paramètres d'encodage de Dreamweaver, vous pouvez définir s'il faut inclure un. BOM. Généralement, tant que la sortie de PHP n'est pas une image (GDI Stream), la BOM ne posera pas de problèmes si le GDI Stream a un supplément. Les caractères seront affichés sous forme de croix rouges
I. J'espère que cet article sera utile à la conception de programmes PHP basés sur le framework ThinkPHP.
Pour plus d'articles sur les solutions aux sessions invalides et aux cookies dans thinkphp, veuillez faire attention au site Web PHP chinois !