Cookie Problem
Stefan
- javascript
0 Hans-Peter Rieger0 Stefan0 Hans-Peter Rieger0 Stefan
0 Joachim
Hei@all
Hab ein kleines Cookie-Problem, hoffentlich kann mir jemand weiterhelfen.
Also das Problem ist eigentlich ganz schnell erklärt, der Browser (IE 6.0) schreibt das Cookie einfach nicht. Also auf der Seite logged man sich ganz normal ein (pers. Anrede via HTML Input Befehl) - das klappt alles noch wunderbar - solange man auf der Seite bleibt. Auch beim reloaden klappts noch und die Cookies werden einwandfrei übernommen. Macht man aber die Seite zu und startet sie neu, werden die Cookies - sofern sie existieren - ausgelesen, das klappt aber nun nicht mehr - sprich der Browser hat die Cookies nicht in die dazugehörige Datei (Windows-Verzeichnis (windows/cookies) geschrieben. Sie existieren also somit beim neustart der Datei nicht! So muss man sich jedesmal neu auf der Seite neu einloggen, welches ja normalerweise nur einmal geschehen sollte.
Schreiben tut man doch die Cookies via document.cookie = 'Name';
Auslesen normal via var Anrede = document.cookie;
Dann müsste doch normal der / die Cookies automatisch geschrieben/gelesen werden, oder? Oder mach ich was falsch? An den Cookie-Einstellungen im IE liegts allerdings nicht, habs sogar scho auf der niedrigesten Sicherheitsstufe probiert, mit dem gleichen negativen Ergebnis.
Kann mir jemand weiterhelfen?
Besten Dank im voraus!
Mit freundliche Grüssen,
Stefan €:)
PS : Wie kann man mehrere Cookie-Strings schreiben / lesen ???
Hi Stefan,
hast Du drangedacht, dass Du jedem Cookie ein Ablaufdatum mitgeben mußt, damit sich das Cookie nicht am Ende der Session selber löscht ?
siehe http://selfhtml.teamone.de/javascript/objekte/document.htm#cookie
Gruß
Hans-Peter
Hei Hans-Peter,
danke für Deine rasche Antwort! Du hast Recht, bisher habe ich noch nicht daran gedacht - ging davon aus das die Cookie ohne gesetztem Ablaufdatum einfach sozusagen "ewig" gespeichert bleiben, bis halt zur Festplattenformation bzw. neuaufsetzung des Rechners etc.
Aber wie kann man mehrere Cookies setzten bzw. ansprechen? Sobald man doch mehrmals sozusagen das Cookie mit einem neuen Wert setzt, also ab den zweiten mal document.cookie wird doch der erste Cookie Wert überschrieben, oder hab ich da einen Denkfehler?
Viele Grüße und besten Dank,
Stefan :)
***********
Hi Stefan,
hast Du drangedacht, dass Du jedem Cookie ein Ablaufdatum mitgeben mußt, damit sich das Cookie nicht am Ende der Session selber löscht ?
siehe http://selfhtml.teamone.de/javascript/objekte/document.htm#cookie
Gruß
Hans-Peter
Hi again, Stefan
Aber wie kann man mehrere Cookies setzten bzw. ansprechen? Sobald man doch mehrmals sozusagen das Cookie mit einem neuen Wert setzt, also ab den zweiten mal document.cookie wird doch der erste Cookie Wert überschrieben, oder hab ich da einen Denkfehler?
ups, soweit ich weiß, indem man die einzelnen Cookie-Strings mit einem Ausrufezeichen voneinander trennt. Ich habe das bisher immer mit ASP gemacht, da ist das einfach. Schau doch mal den Quelltext von
http://members.ozemail.com.au/~dcrombie/cookiedemo/multi.html
nach. Da kann man sich das (hoffentlich) auseinanderklamüsern.
Ciao,
Hans-Peter
Danke, werd ich machen :-)
Besten Dank für Eure Hilfe!
hi,
Aber wie kann man mehrere Cookies setzten bzw. ansprechen?
cookies werden als ";"-separierte Name/Wertpaare in _einem_ String abgelegt, also "ID=12345;Name=Herman;Info=blah". Du musst also fuer jeden neuen Wert ein neues Cookie setzen. Das Auslesen ist entsprechend muehsam, Du musst diesen String durchsuchen. Dabei hilft Dir eventuell diese Funktion:
// read cookie
function getCookie(name)
{
var dc = document.cookie;
if(dc.indexOf(name + "=") != -1)
{
var anf = dc.indexOf(name) + name.length + 1;
var ende = (dc.indexOf(";", anf) != -1)? dc.indexOf(";", anf) : dc.length;
return unescape(dc.substring(anf,ende));
}
else return null;
}
damit erhaeltst Du den Wert eines Cookie, indem Du den Namen uebergibst: alert(getCookie("lala"));
hth + Gruss Joachim