2011-10-06 14 views
1

Je suis en train deux cookies dans PHP dans mon répertoire racineles cookies en double

setcookie ("st", "$todays_system_date" ); 
    setcookie ("en", "$tomorrow"); 

Mon problème est que je dois les mettre à nouveau dans un script qui est dans un dossier plus profond, par exemple:/journal/ Lorsque je les mets et que j'essaie de les lire ou de regarder le jeu de cookies, je trouve que j'ai 2 x et 2 st cookies.

Ma question est comment puis-je faire référence à un seul ensemble de cookies? et les lire?

merci à l'avance

+0

Définissez-vous également le "Chemin du cookie"? Pour script dans "root" il devrait être "/" et ou sous-dossier, il devrait être "/ journal". –

Répondre

4

Les cookies sont des paires clé/valeur - ils auront que jamais une valeur unique dans une portée donnée.

Cependant:

  • Il est possible d'avoir plus d'un cookie avec les mêmes valeurs clés et différentes pour le même domaine (bien qu'il aura toujours qu'une seule valeur effective dans un domaine donné).

Par exemple, si vous définissez le cookie st dans la racine (/) avec la valeur 1, et /diary/ avec la valeur 2, les deux témoins existeront dans leur propre droit. Lorsque vous êtes dans le répertoire / (ou n'importe quel sous-répertoire de / qui n'est pas /diary/ ou un sous-répertoire de /diary/) la valeur sera 1. Lorsque vous êtes dans /diary/ ou un sous-répertoire de /diary/ si sera 2:

Directory   Cookie Value 
/     1 
/somedir/    1 
/diary/    2 
/diary/subdir   2 
/somedir/diary/  1 


  • Il est possible de régler le même cookie deux fois dans la même portée, mais seulement la valeur plus tard sera effective - la valeur ultérieure remplace la valeur précédente.

Par exemple:

setcookie('st',1); // st is now 1 for the current path 
setcookie('st',2); // st is now 2 for the current path 

Si vous regardez le message de réponse HTTP qui est envoyé par PHP, vous verrez 2 Set-Cookie: têtes pour la st clé.Toutefois, lors de la prochaine requête dans la portée du cookie, seule la valeur ultérieure 2 sera renvoyée au serveur.

+0

Si vous remplacez mes "cookies peuvent être un peu bizarre" avec ce post, vous comprendrez que les cookies peuvent être un peu bizarre;) +1 – CD001

1

Les cookies peuvent être un peu bizarre - il devrait travail si vous définissez plusieurs paramètres ... essayez:

setcookie('st', "{$todays_system_date}", 0, '/', '.yourdomain.ext'); 
setcookie('en', "{$tomorrow}", 0, '/', '.yourdomain.ext'); 

Il pourrait être que les témoins suivants sont étant défini avec un chemin ou un domaine différent menant à la duplication.

n.b. Si vous utilisez '.yourdomain.ext' (notez le .avant votre domaine) le cookie sera accessible à travers tous les sous-domaines sur votre site, donc www.yourdomain.ext ou badger.yourdomain.ext et ainsi de suite.

Pour plus d'informations, voir: http://uk3.php.net/manual/en/function.setcookie.php