Attribution d'un nom aux cookies - bonnes pratiques [fermé]

107

À quoi devraient ressembler les noms de cookies?

Devraient-ils être:

  • minuscule
  • Affaire de chameau
  • Underscore_Camel_Case
  • MAJUSCULE

Ou devraient-ils être autre chose?

Emanuil Rusev
la source
1
Bonne question! Je voterais pour s'il me restait des votes.
Pekka
1
@Pekka: J'ai voté pour vous. Je le voterais aussi, mais je ne peux voter qu'une fois :(
Charlie Brown
2
@Bran, j'ai voté pour vous car je reçois de toute façon de nouveaux votes dans quelques minutes. Oh mais j'allais voter pour ça aussi ... bon sang.
Tor Valamo
1
Merci Jacob! Cela nous amène un pas en avant. Vous n'avez pas prévu de voter pour cette question par hasard, n'est-ce pas? Parce que si vous l'avez fait, nous aurons besoin d'un autre bénévole!
Pekka
1
Juste au cas où je ne le ferais pas. Alors, voici mon +1 pour vous les gars. :)
Hilton Perantunes

Réponses:

66

appname_meaningfulname

Ignacio Vazquez-Abrams
la source
10
@Emanuil: pour le distinguer de tous les autres cookies générés par d'autres applications sur le même domaine.
Ignacio Vazquez-Abrams
2
@Emanuil Rusev, les modules complémentaires de navigateur installent parfois des cookies. Je viens de l'apprendre à la dure lorsque mon site Web a détecté un cookie et obtenu l'ensemble de données par le module complémentaire de l'utilisateur au lieu de l'ensemble de données de mon site.
lala
8

Gardez à l'esprit que ce cookie est envoyé avec chaque demande, alors à mon humble avis, utilisez simplement le plus petit nom possible et documentez bien votre code.

MatthieuP
la source
4

Cela devrait être quelque chose qui évite les conflits de noms avec les paramètres arbitraires _GET et _POST que vous pourriez utiliser, puisque _REQUEST encapsule les trois tableaux globaux (!), Avec la priorité en fonction de la façon dont votre paramètre variables_order est défini dans php.ini. En d'autres termes, si vous avez un _COOKIE nommé "x" et un paramètre de chaîne de requête nommé "x", et que vous demandez $ _REQUEST ["x"], vous obtenez la valeur du cookie lorsque vous voulez / attendez le paramètre GET. Ceci est particulièrement problématique si vos cookies sont limités à la racine de votre site Web "/", et non au dossier où ils sont consommés.

Alors je dis, deux bonnes pratiques:

  1. assurez-vous de limiter la portée de vos cookies au chemin où ils sont lus et écrits, (le troisième argument de la méthode setcookie () fait cela)
  2. donnez à vos cookies une sorte de convention de dénomination spécifique aux cookies. Je suggère un site Web inversé, comme les espaces de noms java, puis ".". {Appname}. ".". {Nom de cookie convivial camel cased} Donc, si votre site est www.testsite.com et que votre application est foo, et votre variable est "bar bar bar bar bar barann", ce serait "com.testsite.foo.barBarBarBarBarBarann"
WillieMack
la source
3
Avez-vous vu certaines de ces pratiques sur un site Web en direct?
Emanuil Rusev
0

J'utilise n'importe quel style que les normes de codage pour le projet exigent.

En général, je préfère camelCase pour les schémas de dénomination, mais celui qui paie les factures est celui avec lequel je vais.

zombat
la source
0

Peut-être que vous n'aimerez pas ma réponse:

N'utilisez pas vos propres cookies mais stockez des données dans des sessions de serveur. Vous n'avez donc besoin que d'un cookie (pour référencer l'ID de session) et comment vous nommez qui ne joue aucun rôle.

NineBerry
la source
9
Cela devient compliqué avec les équilibreurs de charge, car alors la session doit être stockée dans une base de données qui n'est pas sur le même hôte (ou peut-être même le même centre de données). Parfois, les cookies sont parfaits.
dotancohen
1
@dotancohen pouvez-vous fournir des liens concernant le problème que vous décrivez? Merci!
Sharky
1
«N'utilisez pas de cookies» semble un peu puritain; mais j'aime cette tentative de garder les choses propres pour l'utilisateur.
Parapluie
securecookies peut être utilisé en toute sécurité sans aucun stockage de session côté serveur. Ils n'ont pas besoin d'être énormes (en fait, il y a une limite de 4k, ce qui est assez modeste) et évite les équilibreurs de charge et / ou les recherches de bases de données centralisées.
colm.anseo