XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Javascript & Ajax (http://xhtmlforum.de/forumdisplay.php?f=83)
-   -   Cookie Informationen nur für eine seite? (http://xhtmlforum.de/showthread.php?t=41396)

captain 17.08.2006 17:20

Cookie Informationen nur für eine seite?
 
Hallo!

ich hoffe, ihr schlagt mir nicht den kopf ab, aber ich habe im netz keine antwort gefunden.

Hier mein problem:
ich habe mehrere seiten mit listen, welche man via javascript auf- und zuklappen kann. diese informationen (also display:block, bzw. none) werden in einem cookie gespeichert, damit der benutzer, wenn er die seite wieder besucht auf seinem "stand" ist und nicht nochmal alles auf- zuklappen muss.

nun verwende ich für die auf- zuklappfunktion natürlich immer das gleiche javascript. das problem ist jetzt aber, dass das cookie und dessen styleinformationen von allen seiten gelesen werden, sodaß auf allen seiten mit den listen der gleiche zustand erscheint.

kann man irgendwie bestimmen, dass der cookie nur für eine bestimmte seite gilt? also z.b. für http://www.meineseite/faq/index.htm

ich hoffe, ihr könnt mit meiner beschreibung was anfangen.

danke und grüße,

captain

duessu 17.08.2006 17:35

Salü
Soweit ich weiss, kann man dies nicht einschränken.

Mein Vorschlag ist, dass du jeder liste einen Eindeutigen Namen gibst. Also einer der Über deine ganze HP eindeutig ist. Würde einer nach folgendem Aufbau vorschlagen: Seite_liste.

captain 17.08.2006 17:51

@duessu

danke für deine antwort. das mit der eindeutigen listenzuordnung hatte ich mir auch schon überlegt. weitergedacht müsste man dann pro liste ein cookie anlegen. nur kann man ja nicht beliebig viele cookies senden. das ist doch beschränkt auf 20 stück oder so?

grüße,

captain

RoToRa 18.08.2006 12:51

Wenn jede Liste in einem anderen URL-Pfad liegt, dann könntest du für jede Liste einen eigenen Cookie setzen. Schau in der Doku der Programmiersprache, die du verwendest nach, wie Cookies gesetzt wird, da wird sicher der "Path"-Parameter erklärt.

Ansonsten halte ich es persönlich eh für keine gute Idee mehr als ein Cookie zu setzen. Wenn du mit einem eindeutigen Name pro Liste arbeitest, kannst du auch alles in ein Cookie schreiben. Die Liste müsste den ganzen Cookie lesen, den Teil der nur ihn betrifft raussuchen, diesen Teil bei Bedarf ändern (ohne die Teile für die anderen Listen zu änderen) und dann den ganzen Cookie zurückschreiben.

Robin

captain 18.08.2006 17:31

@qRoToRa

danke für deine antwort. ich denke auch, dass es nicht sinnvoll ist, mehr als einen cookie zu setzen und finde deine lösung auch sehr interessant. allerdings könnte ich dann speicherprobleme bekommen, da ein cookie doch nur eine größe von 4kb (oder waren es 8kb?) haben darf. wieviele zeichen sind das überhaupt?

aber ich denke, ich versuche das so zu lösen, wenn niemand eine noch elegantere lösung hat...

viele grüße,

captain

RoToRa 18.08.2006 18:33

Naja, wenn du mehr als 4k Daten speichern müsstest, dann solltest Du Dir überlegen, ob du nicht Sessions verwendest/implementierst und die Daten serverseitig speicherst.

Robin

captain 21.08.2006 10:41

das problem bei der serverseitigen datenspeicherung in bezug zu einer session ist, daß wenn die session vorbei ist (z.b. browser geschlossen), die daten auch nicht mehr abgerufen werden können. da ich aber möchte, daß der user bei jeder neuen wiederkehr auf die seite seine persönlichen einstellungen wieder vorfindet, ist die serverseitige lösung glaube ich nicht umzusetzen. es sei denn, man müsste sich mit username/pass anmelden, was aber nicht für die seite vorgesehen ist.

kann mir jemand sagen, wieviele cookies pro host gespeichert werden dürfen? ich habe im netz nur empfehlungen gefunden von 0-65535 aber mindestens 20. was sind denn die grundeinstellungen der verschiedenen browser?

viele grüße,

captain

RoToRa 21.08.2006 14:26

Zitat:

Zitat von captain
das problem bei der serverseitigen datenspeicherung in bezug zu einer session ist, daß wenn die session vorbei ist (z.b. browser geschlossen),

Nicht wenn die SESSION-ID im Cookie gespeichert wird. Ob die Session-ID oder die eigentlichen Daten im Cokie abgelegt sind, macht für den lebensdauer ja keinen Unterschied.

Zitat:

kann mir jemand sagen, wieviele cookies pro host gespeichert werden dürfen? ich habe im netz nur empfehlungen gefunden von 0-65535 aber mindestens 20. was sind denn die grundeinstellungen der verschiedenen browser?
Bei mir schwirrt im Kopf irgendwas mit der "4 Cookies pro Server" herum, aber irgendwelche konkreten Quellen dafür habe ich nicht..

Robin

captain 21.08.2006 16:45

Zitat:

Nicht wenn die SESSION-ID im Cookie gespeichert wird.
aber die session-id gilt doch nur solange, wie der user auf der seite ist. wenn er auf eine andere seite geht, oder den browser schließt und dann wieder auf die seite kommt, wird doch wieder eine neue session-id vergeben...

aber ich will es jetzt auch nicht zu kompliziert machen ;)

danke auf jeden fall für deine hilfe!

grüße,

captain

RoToRa 21.08.2006 18:59

Zitat:

Zitat von captain
aber die session-id gilt doch nur solange, wie der user auf der seite ist. wenn er auf eine andere seite geht, oder den browser schließt und dann wieder auf die seite kommt, wird doch wieder eine neue session-id vergeben...

Nein, du denkst an "Session-Cookies". Die haben mit Session-IDs nichts zu tun.

Der Begriff "Session" in Session-Cookies beziehen auf eine völlig andere "Session" als bei "Session-ID".

Zunächst einmal ist "Session-Cookie" ein mehr oder weniger künstlicher Begriff. Es ist lediglich ein Cookie dessen Lebensdauer bereits vorbei ist. Der Einfachheit halber behält der Browser ihn im speicher bis der Browser geschlossen wird. Cookies dessen Lebenszeit beim Beenden des Browsers nicht vorbei sind, speichert der Browser dauerhalt bis zum nächsten Start des Browsers. Beim "Session-Cookie" bezieht sich der "Session" auf die "Browser-Session", also die Zeit in der der Browser verwendet wird.

Der "Session" bei "Session-ID" ist die Zeit in der auf dem Server die Session erkennt. Sobald die Session-Verwaltung einen neuen Benutzer "erkennt" startet die Session. Die Session endet wenn der Session-Verwaltung es will - in der Regel ist das X Minuten seit dem der Benutzer dieser Session sich nicht mehr meldet, aber es kann unbegrenzt sein.

Nun ist bei einem solchen server-seitigen Session wichtig wie der Server den selben Benutzer wiedererkennt. Eine simple Methode ist z.B. über die Client-IP-Adresse. Wenn innerhalb einer kurzen Zeit von X Minuten mehrere Anfragen von der selben IP-Adresse kommen, nimmt der Server an das ist derselbe Benutzer. Dies ist aber unsicher, da es vorkommen kann, das zwei Benutzer dieselbe IP haben, oder das sich die IP eines Benutzer zwischendurch ändert.

Sicherer ist es dem Benutzer eben eine Session-ID zu geben. Dies kann von einem Seitenaufruf zum anderen über ein Parameter an den URLs weitergegeben werden (oft z.B. als ...?PHPSESSION=... zu sehen). In der Regel wird die Session-ID aber als Cookie gesetzt. Dieser Cookie *kann* ein Session-Cookie sein. Da aber der Session-Cookie beim schließen des Browsers verloren geht, wird der Session auf dem Server auch nicht mehr genutzt werden können. Die Session-ID kann aber genauso gut in einem langlebigen Cookie gespeichert werden und so beim nächsten Start des Browsers wieder zur Verfügung stehen.

Puh, ich muss jetzt weg. Ich hoffe die Erklärung war verständlich. Ansonsten muss ich später nochmal ran.

Robin


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:39 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023