Cookie lässt sich nicht auf längere Zeit setzen....

Hansii1234

Mitglied
Hi Leute!

Hab ein Problem mit JavaScript.
Ich hab ein kleines Loginscript mit Ajax erstellt und möchte dann die Daten mit hilfe von Cookies speichern. Soweit klappt auch alles, nur geht es nicht, dass der Cookie nachdem man die Seite geschlossen hat, weiterhin die Daten zur verfügung stellt...

Hier mal der JavaScriptCode von mir:

Code:
function setCookie(username,pass,secure){
  var name_cook = "username="+username+";";
  var pass_cook = "pass="+pass+";";
  var secure_cook = "secure="+secure+";";
  if(document.getElementById('merken').checked==true){
    var jetzt = new Date();
    var ablauf = new Date(jetzt.getTime()+(7 * 24 * 60 * 60 * 1000));
    var expire_cook = "expires=" +ablauf.toGMTString()+';'; 
    }
  else{
    var expire_cook = "expires=;";
    }
  document.cookie = name_cook;
  document.cookie = pass_cook;
  document.cookie = secure_cook;
  document.cookie = expire_cook;
  alert(document.cookie);
  }

Ihr könnt das Script auch hier mit username und passwort "gast" ausprobieren.
Nach erfolgreichen Login, lass ich zu testzwecken den cookie mit alarm ausgeben.
Wenn ihr die Seite reloadet seht ihr auch, dass die Daten oben drüber stehen. Nur wenn sie geschlossen wird sind se wechhhh... :eek:

Könnt ihr mir weiterhelfen?

Ich hab eventuell auch die Befürchtung, dass es am FreeWebspace liegt... Bin mir aber nicht sicher...

Danke!
 
Anders als bei einer HTTP-Anfrage befinden sich im document.cookie-Objekt im aktuellen Kontext gültigen Cookies. Und diese entsprechen dabei dem Schema:
Code:
<Name-1>=<Wert-1> *(;<Parameter-1>), <Name-2>=<Wert-2> *(;<Parameter-2>), … <Name-n>=<Wert-n> *(;<Parameter-n>)
Als Parameter können dabei folgende gesetzt werden:
Code:
expires=<Datum>
domain=<Domain>
path=<Pfad>
secure
Siehe dazu auch die Netscapes Spezifikation zu Cookies.

Du kannst also nicht Benutzername und Passwort in einem Cookie setzen wie du es versuchst, sondern müsstest diese Werte zu einem zusammenfügen. Zu dem Überschreibst du document.cookie immer wieder mit einem neuen Wert.

Aber wozu speicherst du überhaupt das Passwort im Cookie? Das ist einerseits aus Sicherheitsgründen eigentlich ein völliges Tabu und andererseits auch gar nicht notwendig.
 
Wenn du das Script mal ausprobiert hättest, würdest du merken, dass das Cookie nich immer einfach mit neuen Werten überschrieben wird!
Desweiteren speichere ich nicht das direkte Passwort in dem Cookie! Das ist ein Passwort, das mit dem originalem Passwort und nem Saltwert vermengt ist => keine Sicherheitslücke! Versuch doch mal das Passwort, welches du in meinem Script unter "gast" dann sehen wirst mit ner RainbowTable zu vergleichen! Dürfte bei dem md5-Wert für "gast" ja eigentlich kein Problem sein! So wie es bei mir aber ist... nö!

Wenn ich die Daten als eine Variable abspeicher, so wie du es meinst, ist das Cookie komplett leer! :confused:

Trotzdem Danke!
 
Ok... sorry!
Hab mich falsch ausgedrückt und im Mom. schnell schnell das Script geschrieben...
Das ist auch der Hashwert und nicht das Originalpasswort...!
Ich habs jetzt beim Schreiben schnell so genannt!
Ich werds erst verschönern, wenn es seine Funktion auch durchführen kann.

Aber darum geht es ja im Mom. nicht... sondern eher um den Cookie
 
Ich sagte ja bereits, dass die Syntax falsch sei und du zudem die Cookies immer wieder überschreiben würdest.
 
Sprich es müsste so aussehen...:

Code:
function setCookie(username,pass,security){
  var name_cook = "username="+username+";";
  var pass_cook = "pass="+pass+";";
  var security_cook = "security="+security+";";
  if(document.getElementById('merken').checked==true){
    var jetzt = new Date();
    var ablauf = new Date(jetzt.getTime()+(7 * 24 * 60 * 60 * 1000));
    var expire_cook = "expires=" +ablauf.toGMTString()+';'; 
    }
  else{
    var expire_cook = "expires=;";
    }
  document.cookie = name_cook+pass_cook+security_cook+expire_cook;
  //alert(document.cookie);
  }

Wenn ja, gehts nicht... Wenn nein, wüßte ich jetzt nicht wie du es meinst...
 
Probier mal Folgendes:
Code:
function setCookie(username,pass,security){
	var str = "idtoken="+username+":"+pass;
	if( document.getElementById('merken').checked ) {
		str += "; expires=" + new Date(new Date().getTime()+(7 * 24 * 60 * 60 * 1000)).toGMTString();
	}
	if( security ) {
		str += "; secure";
	}
	document.cookie = str;
	// alert(document.cookie);
}
 
Ok...
Ich hätt vielleicht auch nicht das Wort secure benutzen sollen...
Ich wusste nicht, dass das eine extra Funktion bei Cookies is...
Aber daran lag es nicht!
Ich habs jetzt so gemacht...

Code:
function setCookie(username,hash,salt){
  var str = "username="+username+":"+"hash="+hash+":"+"salt="+salt+";";
  if(document.getElementById('merken').checked==true){
    var jetzt = new Date();
    var ablauf = new Date(jetzt.getTime()+(7 * 24 * 60 * 60 * 1000));
    str += "expires=" +ablauf.toGMTString()+';'; 
    }  
  else{
    str += "expires=;";
    }
  document.cookie=str;
  //alert(document.cookie);    
  }

aber das ist ja nicht Sinn der Sache!
Sofern ich die Daten dann wieder mit (php)
PHP:
$_COOKIE['username'], $_COOKIE['hash'], $_COOKIE['salt']
aufrufe, stehen alle unter "username", was ja auch klar ist, da die Daten mit einem Doppelpunkt statt einem Semikolon getrennt sind...
Geht das nicht anders... Klar könnte ich es so machen, dann müsste ich aber das Cookie wieder mit JavaScript auslesen ( indexof() ) und suchen... aber ich hatte vor php zu benutzen.... oder geht das dann nicht so? Trotzdem danle! :)
 
Wozu speicherst du denn all diese Daten in einem Cookie? Speichere sie doch in einer Sitzung und die Sitzungs-ID nur im Cookie.
 

Neue Beiträge

Zurück