Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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";

}

}

Geschrieben (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 von VaNaTiC
Geschrieben
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. :(

Geschrieben

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.

Geschrieben

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.

Geschrieben

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.

Geschrieben

Du geizt extrem mit Informationen, was zur Laufzeit in welchen Variablen drin steht :D

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 :)

Geschrieben

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.

Geschrieben (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 von Michaela1991
Geschrieben

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?

Geschrieben

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?

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...