Cookies & Javascript

Dank dem HTML5 Canvas ist es nun möglich auch umfangreichere Spiele im Browser ohne Flash umzusetzen. Ich habe mich bereits an einigen kleinen Spielen,  wie evade W und Tread, probiert. Wenn ein Spiel aber über eine längere Spielzeit verfügen soll, ist eine Speicherfunktion fast unabdingbar. In diesen Artikel gehe ich darauf ein wie man mit Javascript einfach Werte per Cookies speichern kann.

Was sind Cookies?

Browser Cookies bieten die Möglichkeit Werte auf dem Computer des Nutzers zu speichern. Ein  Cookie-Eintrag besteht aus drei Teilen: Bezeichner (id), Wert (value) und Verfallsdatum (expiry date). Die Teile werden zu einen String zusammen gesetzt:  id=value;expire=Sat, 28 Jan 2012 10:57:23 GMT;

Wie man erkennt sollte weder der Bezeichner noch der Wert Semikolon oder Leerzeichen enthalten. Dies kann man mit der Javascript Funktionen escape(string) erreichen bzw. mit unescape(string) rückgängig gemacht werden. Desweiteren sollte man beachten dass man nur eigene Cookies lesen kann, denn der Cookie wird zur Domain zugeordnet.

Wer jetzt alle möglichen Daten in Cookies packen möchte, muss aber gewarnt sein:

  • Insgesamt dürfen nicht mehr als 300 Cookies angelegt werden
  • Maximal 4096 bytes pro Cookie
  • Maximal 20 Cookies pro Domain

Wie man sieht kann man nicht all zu viel Daten in Cookies speichern. Dafür gibt es die alternative Web Storage oder man speichert Serverseitig und hält in einen Cookie nur die Session-ID vor.

 

Cookies setzen

In Javascript greift man auf Cookies recht einfach per document.cookie zu. Einen neuen Eintrag setzt man mit folgenden Befehl, wobei cookie_string der oben beschrieben Syntax entsprechen muss: document.cookie = cookie_string;

So kann eine einfache Funktion zum setzen von Cookies aussehen:

function setCookie(id,value,days){
  var now = new Date();
  var till = new Date(now.getTime()+days*86400000);
  document.cookie=id+"="+value+";expires="+till.toGMTString()+";";
}

Cookies lesen

Ob überhaupt Cookies gesetzt wurden kann man so Prüfen: if(document.cookie)…
Den Gesamten Cookie – alle Einträge – bekommt man so:
var cookieValue = document.cookie;

Dann muss man nur noch den gewünschten Wert heraus filtern. Folgende Funktion gibt den Wert eines Eintrages mit der übergebenen ID zurück:

function getFromCookie(id){
    var value= "";
    if(document.cookie){
	var idStart = document.cookie.indexOf(id+"=");
	if(idStart < 0) return "";
	var start = idStart+id.length+1;
	var end = document.cookie.indexOf(";",start);
	if(end == -1) end = document.cookie.length;
	value = document.cookie.substring(start,end);
    }
	return value;
}

Cookies überschreiben / löschen

Um einen Cookie zu löschen Überschreibt man einfach das Verfallsdatum mit einen vergangenen Datum, dann wird das Cookie automatisch gelöscht. Das Überschreiben ist dem Setzen gleich. Einfach nochmal den Eintrag schreiben, wenn die ID gleich ist wird ohne zu Fragen überschrieben.

 

Wie man sieht ist der Umgang mit Cookies in Javascript sehr einfach gehalten. Bei Fragen und Kritik nutzt die Kommentar-Funktion.

 

4 Gedanken zu „Cookies & Javascript

  1. Oh ja, Cookies werden ordentlich missbraucht – in erster Linie von großen Werbefirmen die mit nen paar Tricks nach verfolgen können welche Seite du besucht hast.

    Leider werden Cookies auch von jeglichen Seiten mit einer Anmeldung gebraucht, also einfach abstellen ist nicht Praktikabel.

    Am einfachsten ist da eine Black- oder Whitelist.

  2. Whitelists sind immer sicherer als Blacklists – man hat aber mehr Arbeit damit.

    Ich hab eine Zeitlang mit Firefox eine Whitelist für Cookies benutzt. Heißt man muss jede Domain manuell hinzufügen bei denen man sich z.B. Anmelden will. An Anfang nen bisschen Arbeit aber wenn man mal seine paar Seiten die man öfter Besucht drin hat durch aus sinnvoll.

    Der Nachteil ist aber dass viele Seiten vorher nicht Prüfen ob Cookies erlaubt sind und keine Fehlermeldung ausgeben. Man muss also selber raus finden ob die Seite Cookies braucht oder nicht. Und muss also damit rechnen oft kryptische Fehlermeldungen oder komisches Verhalten zu begegnen.

    Eine Blacklist ist auch bei Cookies nicht unbrauchbar, es sind im groben nur 5 Große Firmen die Sammeln. Man braucht also nur einmal die big-5 verbieten und hat dann keine Arbeit mehr. Bzw. man hohlt sich eine Liste mit den Sammlern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload CAPTCHA.