Michaela1991 Geschrieben 12. März 2009 Geschrieben 12. März 2009 Hallo Leute, ich habe hierein kleines Problem mit meinen Cookies und Javascript. Ich habe eine Sprachauswahl und wenn ich eine Sprache ausgewählt habe, wird der cookie gesetzt. wenn ich das nächste mal auf die Seite komme, soll er mich gleich zu der deutsche seite weiterleiten und nicht erst nach der Sprache fragen. Das problem ist aber, das die Seite beim Einloggen, vor der Sprachauswahl schon einen Cookie setzt. Ich hab schon etliches ausprobiert, komme aber zu keiner lösung. Mein Quelltext dazu sieht so aus: CookieName= "language"; function getCookie(name){ var cname = name + "="; var dc = document.cookie; if (dc.length > 0){ begin = dc.indexOf(cname); if (begin != -1){ begin += cname.length; end = dc.indexOf(";", begin); if (end == -1) end = dc.length; return unescape(dc.substring(begin, end)); } }else{return null; } } function init(){ if(document.cookie){ if(getCookie("language")=="german"){ window.location.href = "../index/de.htm"; } if(getCookie( "language")=="english"){ window.location.href = "../index/en.htm"; } else{ document.write("else"); window.location.href = "lang_select.htm"; } }else{ window.location = "lang_select.htm"; } } Zitieren
Michaela1991 Geschrieben 12. März 2009 Autor Geschrieben 12. März 2009 Achso, ich habe vergessen zu erwähnen, dass ich immer auf dieser Sprachauswahl lande, obwohl ein cookie gesetzt ist. Zitieren
VaNaTiC Geschrieben 12. März 2009 Geschrieben 12. März 2009 (bearbeitet) Kann es sein, dass es bei english geht und bei deutsch nicht? Übrigens Deine Code-Formatierung ist grauenhaft. Gewöhne Dir bitte an, Deinen Code zu formatieren. Dann hättest den Fehler wahrscheinlich selbst gesehen: CookieName= "language"; function getCookie(name){ var cname = name + "="; var dc = document.cookie; if (dc.length > 0) { begin = dc.indexOf(cname); if (begin != -1){ begin += cname.length; end = dc.indexOf(";", begin); if (end == -1) end = dc.length; return unescape(dc.substring(begin, end)); } }else{ return null; } } function init(){ if(document.cookie){ if(getCookie("language")=="german"){ window.location.href = "../index/de.htm"; } [B][COLOR="Red"]else [/COLOR][/B]if(getCookie( "language")=="english"){ window.location.href = "../index/en.htm"; } else{ document.write("else"); window.location.href = "lang_select.htm"; } }else{ window.location[COLOR="Red"].href[/COLOR] = "lang_select.htm"; } } Soweit ich weiss, ist das doch übrigens: window.location = ..., oder??? Bearbeitet 12. März 2009 von VaNaTiC Zitieren
Michaela1991 Geschrieben 12. März 2009 Autor Geschrieben 12. März 2009 Kann es sein, dass es bei english geht und bei deutsch nicht? Nein keins von beiden geht auch mit dem Veränderten Quelltext jetzt nicht. Soweit ich weiss, ist das doch übrigens: window.location = ..., oder??? Jein, es gibt viele möglichkeiten. Und diese möglichkeit funktioniert auch. Übrigens Deine Code-Formatierung ist grauenhaft. Gewöhne Dir bitte an, Deinen Code zu formatieren. Ja das stimmt, das tut mir leid. das kam weil ich es direkt aus dem cms rauskopiert habe und der nimmt es halt unformatiert. Naja leider funktioniert es immernoch nicht. Ich lande immernoch auf der Seite mit der Sprachauswahl. Zitieren
VaNaTiC Geschrieben 12. März 2009 Geschrieben 12. März 2009 OK, hast Du Dir schonmal mit alert(...) das Cookie angeguckt? Wo springt er denn konkret raus? window.location = durch ein alert() ersetzen. Wo und wie setzt Du denn das cookie? Kannst Du das im Browser-Cache lokalisieren? Unter Opera kann man sich die Cookies angucken. Zitieren
Michaela1991 Geschrieben 12. März 2009 Autor Geschrieben 12. März 2009 Er geht in der erste if-Abfrage rein also if(document.cookie){} und springt da wo ich das document.write(else) geschrieben habe raus. Den cookie kann ich auch mit Firefox angucken, da steht: Name:language Wert:german Host:xxx Pfad:/produktion/publicity/franchise.nsf/frames/ Senden für:Jeden Verbindungstyp Gültig bis:Freitag, 12. März 2010 15:20:04 Das cookie setze ich, wenn ich einer der beiden Links, also einer der beiden Spracken angelickt habe. Jenachdem steht im Cookie unter wert dann halt english oder german. das mit dem setzen klappt ja auch wunderbar. Zitieren
VaNaTiC Geschrieben 12. März 2009 Geschrieben 12. März 2009 Dann muss der Fehler in Deiner Funktion getCookie() sein, so dass diese eben nicht den Text zurückliefert den Du erwartet würdest. Mach mal ein paar alert()'s zum Testen in die getCookie()-Funktion. Zum Beispiel was tatsächlich in document.cookie drin steht, wenn die Funktion ausgeführt wird. Zitieren
Michaela1991 Geschrieben 13. März 2009 Autor Geschrieben 13. März 2009 So, ich habe jetzt rausgefunden das die variable begin ein -1 zurückliefert. Kann mir einer sagen warum das so ist. Deswegen kommmt er ja nicht in die nächste schleife rein. Zitieren
VaNaTiC Geschrieben 13. März 2009 Geschrieben 13. März 2009 Du geizt extrem mit Informationen, was zur Laufzeit in welchen Variablen drin steht So kann Dir im Detail leider keiner helfen. Bitte schreib doch was in document.cookie drin steht, dann kann ich Dir auch sagen, warum der Dir -1 liefert. Aber wahrscheinlich siehst das dann selbst Zitieren
Michaela1991 Geschrieben 13. März 2009 Autor Geschrieben 13. März 2009 In dem Cookie steht der wert des anderen cookies drinne. 1DomAuthSessId=C01D72494FFCE464845B56D835B68C7D Wiesoooooooo? Ich möchte doch den andern Cookie auslesen. Zitieren
VaNaTiC Geschrieben 13. März 2009 Geschrieben 13. März 2009 Hmm, Du erwartest, dass getCookie("language") den text "german" oder "english" zurückliefert. Wenn ich nun in getCookie() schaue, dann prüfst Du korrekt ob document.cookie überhaupt da ist. Dann ob Länge > 0 ist, auch ok. Dann holst Du die Position im Text wo "language=" vorkommt. Und das liefert Dir -1, also nicht vorhanden. Das bedeutet, das ist nicht im Text. Deswegen frage ich, was alert(document.cookie) überhaupt anzeigt. Weil die Vermutung nahe liegt, dass es eben nicht "language=" ist! Wenn in document.cookie nur "1DomAuthSessId=C01D72494FFCE464845B56D835B68C7D" drin steht, dann schreibst Du Deinen Cookie nicht richtig. Dann kann er aber auch nix finden. Zitieren
Michaela1991 Geschrieben 13. März 2009 Autor Geschrieben 13. März 2009 (bearbeitet) Meinen Cookie zum setzen habe ich folgendermaßen geschrieben: var timeToLive = new Date(); timeToLive = new Date(timeToLive.getTime() +1000*60*60*24*365); document.cookie = "language=german; expires=" + timeToLive.toUTCString()+";"; Verstehe ich das richtig, wenn ich 2 cookies habe durchsucht er beide. Und er gibt mir weil der cookie falsch gesetzt ist nur den einen wert zurück? Oder durchsucht er nur den einen Cookie der z.B zuerst gesetzt wurde? Also wenn ich das ganze offline teste funktioniert es wunderbar, das liegt denke ich daran das da halt kein zweiter cookie vorhanden ist. Anders kann ich mir das nicht erklären. Bearbeitet 13. März 2009 von Michaela1991 Zitieren
VaNaTiC Geschrieben 13. März 2009 Geschrieben 13. März 2009 Hmm, sieht prinzipiell gut aus, aber fakt ist dass beim Aufruf von getCookie() was anderes im Cookie steht. Ich vermute daher, dass an anderer Stelle der Cookie überschrieben wird. Kannst Du das ausschliessen oder prüfen? Zitieren
VaNaTiC Geschrieben 16. März 2009 Geschrieben 16. März 2009 Gibt es positive Neuigkeiten dazu? Wenn ja, wäre es interessant zu wissen, wo das Problem lag/liegt? Zitieren
Michaela1991 Geschrieben 16. März 2009 Autor Geschrieben 16. März 2009 Nein leider gibt es noch nichts neues Hab den fehler immernoch nicht gefunden. Ich weis nur das beim auslesen der Cookies nur der eine gelesen wird. Wenn ich was neues weis, werde ich mich melden Zitieren
Michaela1991 Geschrieben 18. März 2009 Autor Geschrieben 18. März 2009 Irgendwie habe ich verstgestellt, dass wenn ich eine Sprache ausgewählt habe und weitergeleitet wurde, ein cookie gesetzt ist, bzw. wird. Wenn ich jetzt aber wieder auf die Hauptseite gehe auf der ich entsprechend ob ein cookie gesetzt ist oder nicht weitergeleitet werde, werdeich immer wieder auf die Sprachauswahl geleitet, weil der cookie weg ist. Woran kann das liegen? Also die Haltbarkeit des Cookie kann es ja nicht sein, weil die ist ja auf ein Jahr gesetzt. Weis jemand Rat? Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.