Variablen in Cookies
TheInsomnius
- javascript
Hi zusammen!
Ich hab mal ne Frage an euch. Bislang hab ich Variablen in Cookies immer ganz einfach mit
document.cookie = V
bzw.
V = document.cookie
gespeichert/gelesen. Das war auch immer schön und gut, nur wurde dabei der bestehende Wert jedesmal überschrieben. Ich denke doch aber, dass es Wege und Mittel gibt noch einen zweiten Wert in dem Cookie abzulegen, oder ist das nicht möglich?
Falls da jemand weiterweiss, könnte er mir ja hier ne antwort posten.
Danke im Voraus
theInsomnius
Hallo,
Du kannst alle Werte die Du speichern wills, zu einem String zusammenkleben. Als Trennungszeichen nimmst Du dann ein "neutrales" Zeichen Deiner Wahl. zum Beispiel kann "Dein" v dann so aussehen:
Name="Chräcker"
Wunsch="besucht-die-Seite"
Seite="www.chraecker.de/stempel"
v=Name+"#"+Wunsch+"#"+Seite
ergibt dann eben den Sring "Chräcker#besucht-die-Seite#www.chraecker.de/stempel"
dieses V schaufelst Du ins Cookie und kannst es wieder auslesen. Jetzt must Du nur noch v zerschneiden, wobei Du Dich an den # orientieren kannst. (Also nach dem vorkommen des ersten # suchen, alles davor ist der erste Wert. Dann das nächste, alles zwischen dem vorletzten # und letzten # ist der zweite Wert etc....)
Chräcker
Ach ja ;-)
Also nach dem vorkommen des ersten # suchen, alles davor ist der erste Wert. Dann das nächste, alles zwischen dem vorletzten # und letzten # ist der zweite Wert etc.
tausend dank erstmal, wobei ich das gar nicht so leicht finde. meine erste variable ist eine Zahl, was die sache noch ziehmlich einfach gestaltet, aber dann brauch ich nun noch einen 2. Wert, der zwei zustände annehmen kann, wobei ich an 0 und 1 dachte. Andererseits nehm ich wohl besser A und B, da ich mit so vielen Zahlen sonst wieder Probleme bekomme. Noch etwas unklar ist mir aber, wie ich nur bis zum ersten Trennzeichen (#) auslese, oder danach suche. Ich nahm immer V = document.cookie und das war alles. V konnte ich dann einfach weiterbenutzten. Wenn ich da noch mal einen kleinen Tip bekommen könnte, wär ich recht dankbar.
TheInsomnius
Hallo,
ich habe mir folgendes zurechgemauschelt. (Kein Anspruch auf Eleganz! ;-) )
Dabei muß v so aussehen:
v="#ersterwert#zweiterwert#dritterwert#letzterwert#
v ist Deine zu zerstückelnde Variabel
---------
Leseanfang =v.indexOf("#",0) + 1;
Leseende = v.indexOf("#",Leseanfang);
ersterwert = v.substring(Leseanfang,Leseende);
Leseanfang =v.indexOf("#",Leseanfang) + 1;
Leseende = v.indexOf("#",Leseanfang);
zweiterwert = v.substring(Leseanfang,Leseende);
Leseanfang =v.indexOf("#",Leseanfang) + 1;
Leseende = v.indexOf("#",Leseanfang);
dritterwert = v.substring(Leseanfang,Leseende);
usw.....
-----------
zur Erklärung: mit dem allerersten Befehl suchst Du das erste Trennungzeichen. Eine Position weiter willst Du auslesen (Leseanfang)..... jetzt suchst Du ab dieser Position das nächste Trennungszeichen....bis dahin willst Du auslesen (Leseende) ... in der dritten Zeile schneidest Du diesen Bereich aus V heraus.
Jetzt gehts ab dem letzten Leseanfang weiter in Deinem V-String. Das nächste Trennungszeichen wird gesucht usw....
Wie gesagt, daß ist nur ein Schups, sicherlich kann man das mit diversen Schleifen etc noch knaper und eleganter lösen, und ich weiß auch nicht mehr, warum ich unbedingt direkt mit dem Trennungszeichen angefangen habe, hatte bestimmt (k)einen Grund ;-) ....aber es funktioniert..... und da uns inzwischen eh keiner mehr zuhört....schick mir bei Fragen ruhig einen E-Brief, ich hätte Deine Gegenfrage hier beinahe übersehen...
Chräcker
Also nach dem vorkommen des ersten # suchen, alles davor ist der erste Wert. Dann das nächste, alles zwischen dem vorletzten # und letzten # ist der zweite Wert etc.
tausend dank erstmal, wobei ich das gar nicht so leicht finde. meine erste variable ist eine Zahl, was die sache noch ziehmlich einfach gestaltet, aber dann brauch ich nun noch einen 2. Wert, der zwei zustände annehmen kann, wobei ich an 0 und 1 dachte. Andererseits nehm ich wohl besser A und B, da ich mit so vielen Zahlen sonst wieder Probleme bekomme. Noch etwas unklar ist mir aber, wie ich nur bis zum ersten Trennzeichen (#) auslese, oder danach suche. Ich nahm immer V = document.cookie und das war alles. V konnte ich dann einfach weiterbenutzten. Wenn ich da noch mal einen kleinen Tip bekommen könnte, wär ich recht dankbar.
Wenn Du ein in Funktion befindliches Anschaungsbeispiel mit dokumentiertem Quelltext sehen willst, dann schau Dir mal das Zugformular unter http://www.homepages.de/home/schroepl/pbm/amtsblat/zufall/ an. (Ich muß diese neue Chräcker-Methode für Schleichwerbung doch auch mal bringen. ;-)
Lade mal http://www.homepages.de/home/schroepl/pbm/amtsblat/zufall/formular/formular.js und schau Dir den Quelltext dieses (optisch leeren) "Dokuments" an - ich speichere ganz viele Werte in einem Cookie, um dem Anwender ggf. eine Unmenge von Bestätigungsdialogen zu ersparen, und pfriemele sie entsprechend wieder in einzelne Variablen auseinander.