Cookies benennen - Best Practices [geschlossen]

106

Wie sollten Cookie-Namen aussehen?

Sollten sie sein:

  • Kleinbuchstaben
  • CamelCase
  • Underscore_Camel_Case
  • UPPER_CASE

Oder sollten sie etwas anderes sein?

Emanuil Rusev
quelle
1
Gute Frage! Würde es positiv bewerten, wenn ich noch Stimmen hätte.
Pekka
1
@ Pekka: Ich habe für dich gestimmt. Ich würde es auch positiv bewerten, kann es aber nur einmal positiv bewerten :(
Charlie Brown
2
@Bran, ich habe für dich gestimmt, da ich sowieso in ein paar Minuten neue Stimmen bekomme. Oh, aber ich wollte auch dafür stimmen ... verdammt noch mal.
Tor Valamo
1
Danke Jacob! Das bringt uns einen Schritt nach vorne. Sie hatten nicht vor, diese Frage zufällig zu bewerten, oder? Denn wenn Sie das getan haben, brauchen wir noch einen Freiwilligen!
Pekka
1
Nur für den Fall, ich würde nicht. Also, hier ist meine +1 für euch. :)
Hilton Perantunes

Antworten:

66

appname_meaningfulname

Ignacio Vazquez-Abrams
quelle
10
@Emanuil: Zur Unterscheidung von allen anderen Cookies, die von anderen Apps auf derselben Domain generiert wurden.
Ignacio Vazquez-Abrams
2
@Emanuil Rusev, Browser-Add-Ons setzen manchmal Cookies. Ich habe das gerade auf die harte Tour gelernt, als meine Website ein Cookie aufnahm und den Datensatz vom Add-On des Benutzers anstelle des Datensatzes von meiner Website erhielt.
Lala
8

Denken Sie daran, dass dieses Cookie bei jeder Anfrage gesendet wird. Verwenden Sie also einfach den kleinsten Namen, den Sie können, und dokumentieren Sie Ihren Code gut.

MatthieuP
quelle
4

Es sollte etwas sein, das Namenskonflikte mit beliebigen _GET- und _POST-Parametern vermeidet, die Sie möglicherweise verwenden, da _REQUEST alle drei globalen Arrays (!) Umschließt, wobei der Vorrang davon abhängt, wie Ihre Einstellung variables_order in php.ini festgelegt ist. Mit anderen Worten, wenn Sie ein _COOKIE mit dem Namen "x" und einen Querystring-Parameter mit dem Namen "x" haben und nach $ _REQUEST ["x"] fragen, erhalten Sie den Cookie-Wert, wenn Sie den GET-Parameter möchten / erwarten. Dies ist besonders problematisch, wenn Ihre Cookies im Stammverzeichnis Ihrer Website "/" und nicht in dem Ordner gespeichert sind, in dem sie verwendet werden.

Ich sage also zwei Best Practices:

  1. Stellen Sie sicher, dass Sie den Umfang Ihrer Cookies auf den Pfad beschränken, in dem sie gelesen und geschrieben werden (drittes Argument der setcookie () -Methode tut dies).
  2. Geben Sie Ihren Cookies eine Art Cookie-spezifische Namenskonvention. Ich schlage eine umgekehrte Website vor, wie Java-Namespaces, dann ".". {Appname}. ".". {Freundlicher Cookie-Name Kamel umhüllt} Wenn Ihre Website also www.testsite.com ist und Ihre App foo ist und Ihre Variable ist "bar bar bar bar barann", es wäre "com.testsite.foo.barBarBarBarBarBarBarann"
WillieMack
quelle
3
Haben Sie einige dieser Praktiken auf einer Live-Website gesehen?
Emanuil Rusev
0

Ich verwende jeden Stil, den die Codierungsstandards für das Projekt erfordern.

Im Allgemeinen bevorzuge ich camelCase für Namensschemata, aber wer auch immer die Rechnungen bezahlt, ist derjenige, mit dem ich gehen werde.

Zombat
quelle
0

Vielleicht gefällt dir meine Antwort nicht:

Verwenden Sie keine eigenen Cookies, sondern speichern Sie Daten in Serversitzungen. Sie benötigen also nur ein Cookie (um auf die Sitzungs-ID zu verweisen) und wie Sie es benennen, spielt keine Rolle.

NineBerry
quelle
9
Bei Load Balancern wird dies unübersichtlich, da die Sitzung dann in einer Datenbank gespeichert werden sollte, die sich nicht auf demselben Host (oder möglicherweise sogar im selben Datencenter) befindet. Manchmal sind Cookies in Ordnung.
Dotancohen
1
@dotancohen Können Sie einige Links zu dem von Ihnen beschriebenen Problem bereitstellen? Danke!
Sharky
1
"Verwenden Sie keine Cookies" klingt etwas puritanisch; Aber ich mag diesen Versuch, die Dinge für den Benutzer sauber zu halten.
Parapluie
Securecookies können ohne serverseitigen Sitzungsspeicher sicher verwendet werden. Sie müssen nicht sehr groß sein (tatsächlich gibt es ein Limit von 4 KB, was recht bescheiden ist) und vermeiden Load Balancer und / oder zentralisierte DB-Lookups.
colm.anseo