2009-12-17 33 views
3

Je viens de comprendre que j'ai un problème dans IE tout en travaillant avec une de mes pages. Je mis en biscuit avec:Plusieurs cookies avec le même nom

setcookie('page', '12345', '2000000', '/'); 

Et si je me connecte réinitialiser le cookie appelant à nouveau cette fonction. Dans Firefox tout fonctionne très bien parce que l'ancien cookie est supprimé mais dans IE les deux cookies restent? Comment cela peut-il se produire? N'est-ce pas illégal?

maintenant je fixe avec:

setcookie('page', '', time() - 3600, '/'); 
setcookie('page', '1234', '2000000', '/'); 

Cette solution est ok ou suis-je manque quelque chose?

Répondre

4

According to the documentation, c'est la bonne façon de supprimer un cookie.

+1

Oui, mais $ _COOKIE ['page'] = '1234' ne changera pas la valeur du cookie client, mais uniquement la valeur du serveur. – dfilkovi

1

Juste un pressentiment, mais il semble que la valeur d'expiration est assez faible pour un horodatage, donc les cookies expirent probablement immédiatement (c'est-à-dire à la fin de la session). Peut-être que quelque chose comme ça confond IE en autorisant plusieurs cookies?

Vous devriez probablement utiliser time() au lieu de mettre fin, par exemple:

setcookie('page', '12345', time() + 3600, '/'); 

BTW, votre solution semble bien pour moi.

0

Je rencontre un problème similaire.

Je recharge plusieurs fois ma page en utilisant session_start() à chaque chargement. JavaScript définit les cookies que j'utilise en PHP. Lorsque le client est Internet Explorer, $ _ENV ["HTTP_COOKIE"] contient plusieurs entrées pour chaque cookie. Cela n'arrive pas avec Firefox. Autant que je peux le comprendre jusqu'à présent, lors de l'exécution de code sur un domaine nommé x.y.z, Internet Explorer envoie les cookies pour x.y.z suivi par les cookies pour y.z. PHP place ensuite les deux ensembles de cookies dans $ _ENV ["HTTP_COOKIE"].

Peut-être que cela peut être considéré comme un bug PHP, peut-être pas. À mon humble avis, c'est un bug d'Internet Explorer. Je l'affiche ici dans l'espoir que cela puisse vous aider à résoudre votre problème.

Questions connexes