web-dev-qa-db-fra.com

Domaine PHP Setcookie

Une certaine application, non écrite par moi, et non en PHP, crée un cookie pour le domaine "www.domain.com".

J'essaie de remplacer ce cookie. Donc, dans PHP, j'ai fait:

setcookie('mycookie','mydata',time() + 2*7*24*60*60,'/','www.domain.com', false);

Cependant, le cookie résultant est créé pour le domaine: ".www.domain.com", note le point "." en avance sur le domaine.

Donc, cela ne le remplace pas, cela crée un autre cookie. Que puis-je faire?

22
Nathan H

Le problème est également adressé ici: https://www.php.net/manual/fr/function.setcookie.php

Voir le commentaire par JAH :

Si vous souhaitez limiter le cookie à un seul hôte, fournissez le paramètre de domaine comme chaîne vide.

Vous pouvez aussi essayer .domain.com comme le domaine. Le point de fuite permettra à un cookie pour tous les sous-domaines pour domain.com et pourrait écraser le www.- Cookie, mais je vais d'abord aller avec la solution ci-dessus.

39
Select0r

Si vous spécifiez un domaine, vous devez suivre RFC 2109 et préfixer le domaine avec un point; Sinon, le client le fera. Mais si vous ne spécifiez pas de domaine du tout, le client prendra le domaine de la demande.

6
Gumbo

N'est-ce pas comme un bug? Et si je veux que mes cookies soit juste à www.example.com et pas à something.www.example.com? E.g pour la performance. Je devrais être capable de spécifier le domaine de la cookie et non sur toutes les sous-domaines [sous] [sous]. Sans parler de la quantité de bugs qu'elle provoque, par exemple, définissez Cookie par PHP et en essayant de le supprimer par JavaScript (qui n'ajoute pas le point stupide).

0
adrianTNT