recherche
Maisonphp教程PHP开发Le conflit de cookie et de session de ThinkPHP rend le cookie inutilisable.

Lorsque je faisais récemment un sondage pour un site Web, j'ai rencontré un conflit entre les cookies et les sessions dans ThinkPHP, ce qui empêchait l'utilisation des cookies.

Ce site Web est réalisé en utilisant le framework ThinkPHP. Il y a une page qui affiche de nombreuses images doit avoir un vote correspondant En limitant l'adresse IP, cela limite le nombre de visiteurs dans un certain temps. plage. Vote d'image, mais chaque image ne peut être votée qu'une seule fois. Ce problème a été initialement résolu en utilisant l'IP pour la stocker dans la base de données. Plus tard, il a été amélioré pour utiliser le stockage de session. L'adresse IP est dans le fichier de service, mais l'ID de session généré doit être utilisé. être stocké dans un cookie local. Suivez les instructions du manuel ThinkPHP. Le fonctionnement de la session s'est déroulé sans problème, mais après avoir généré le cookie, le texte du cookie n'a pas pu être trouvé sur l'ordinateur local. génération de cookies, mais les résultats de la visualisation et des tests ont montré qu'il n'y avait pas de limite, j'ai donc créé un fichier PHP séparé, testé le cookie généré, pas de problème, le texte du cookie a été trouvé localement, j'ai donc trouvé le contenu suivant en ligne. Le problème a été résolu dans l'ordre, en utilisant la fonction setcookie() pour définir le cookie, et a obtenu le résultat souhaité.

La solution est la suivante :

Recherchez le fichier de configuration php.ini, puis recherchez un élément : output_buffering, changez sa valeur de off à on, et redémarrez Apache et ce sera d'accord.

Il existe également de nombreux problèmes similaires :

Parfois, vous constaterez que des fichiers qui s'exécutaient initialement sans problème localement, lorsqu'ils sont testés sur le serveur, provoquent en fait une erreur qui n'apparaît pas localement : Attention : Impossible de modifier les informations d'en-tête - en-têtes déjà envoyés par...
 Une telle déclaration, évidemment, la raison en est causée par setcookie Après avoir vérifié sur Internet, il y a l'explication suivante : Il existe certaines restrictions sur l'utilisation des cookies. eux-mêmes, par exemple :

1. La description de l'appel de setcookie doit être placée avant la balise
2. Echo ne peut pas être utilisé avant d'appeler setcookie
3. Le cookie n'apparaîtra dans le programme que lorsque la page Web est rechargée
4. La fonction setcookie doit envoyer

avant que des données ne soient envoyées au navigateur. Sur la base des restrictions ci-dessus, lors de l'exécution de la fonction setcookie(), vous rencontrerez souvent « Non défini. index" et "Impossible de modifier les informations d'en-tête" - en-têtes déjà envoyés par"... et d'autres problèmes. La façon de résoudre l'erreur "Impossible de modifier les informations d'en-tête - en-têtes déjà envoyés par" consiste à retarder la sortie des données vers le navigateur avant de les générer. le cookie. Par conséquent, vous pouvez ajouter Utilisez la fonction ob_start(). De cette façon, le problème peut être résolu. Mais si vous souhaitez ajouter ob_start(), ce n'est pas très réalisable. Le programme a été écrit, donc cela semble un peu déprimant de changer cela ! Lorsque j'ai découvert que cette erreur avait été provoquée, je me suis demandé pourquoi mon ordinateur local n'avait pas provoqué ce problème. Je pensais que c'était parce que la configuration de PHP.ini était différente, mais quand j'y ai réfléchi, c'était faux. tout de même. J'ai donc regardé la phrase "la sortie a commencé à..." qui a suivi, ce qui signifiait qu'il y avait une sortie à un autre endroit avant setcookie, j'ai donc trouvé le fichier qui suivait la sortie a commencé à, et j'ai finalement trouvé que la première ligne était vide.

Pour plus d'articles sur les cookies de ThinkPHP et les conflits de session qui rendent les cookies inutilisables, veuillez prêter attention au site Web chinois de PHP !

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques moisBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

VSCode Windows 64 bits Télécharger

VSCode Windows 64 bits Télécharger

Un éditeur IDE gratuit et puissant lancé par Microsoft

SublimeText3 version anglaise

SublimeText3 version anglaise

Recommandé : version Win, prend en charge les invites de code !

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Puissant environnement de développement intégré PHP