Freitag, 22. April 2011

Cookies mittels JavaScript bearbeiten

Cookies
Cookies nennt man die kleinen textuellen Informationen, welche vom Browser auf dem Client gespeichert werden. Der Browser stellt in der Regel sicher, dass diese Cookies pro Domain verwaltet werden und beim Aufruf der Domain immer mitgesendet werden. So kann man komfortable kleine Informationen ablegen und den Client wieder erkennen. Sehr sinnvoll, um zum Beispiel die eingestellte Wunschanzeigesprache der Webseite wieder herzustellen. Im Cookie sind in der Regel Key-Value-Pairs gespeichert und diese können auch mit einem Verfallsdatum versehen werden. Da Cookies in der Regel URL-Pfad abhängig gespeichert werden, kann man auch hier einen Pfad angeben, um die Information auch von Unterseiten auf der Startseite zu erhalten.
Cookies auf SelfHTML

Einfache Cookie Behandlung mittels JavaScript
Mit JavaScript kann man diese Cookies auch setzen und auslesen. Leider ist die Funktionalität nicht so gut, also helfen wir uns mit eigenen Funktionen. Das geht zum Glück sehr leicht. Natürlich kann man alles in eine Klasse packen, doch hier soll die Funktion reichen. Es sind auch nur 2. Die Set-Funktion bekommt
den Keynamen vom Key-Value-Pair, den Wert (also Value), evtl ein Gültigkeitsdatum in Millisekunden und einen optional einen Pfad. Das Lesen ist noch einfacher. Wir geben nur den gewünschten Key an und erhalten einen Value. Wenn Key nicht vorhanden ist, erhalten wir eine leere Zeichenkette.

Cookie Funktionen
function cookie_set(name, wert, miltime, pfad) {
  if (navigator.cookieEnabled == false)
    return false;
  var str = name+"="+wert.replace(/;/g,"")+";";
  if (miltime) {
    var ablauf = new Date();
    ablauf.setTime(miltime);
    str += " expires="+ablauf.toGMTString();
 }
 if (pfad)
   str += ' path='+pfad;
   document.cookie = str;
   return true;
}

function cookie_get(name) {
  if (!document.cookie)
    return "";
  var str = document.cookie;
  if (str == "")
    return "";
  var teile = str.split(";");
  for (var a=0;a<teile.length;a++) {
    var pos = teile[a].indexOf("=");
    if (name == teile[a].substr(0,pos))
      return teile[a].substr(pos+1);
  }
  return "";
}

Beispiel Einsatz
Wir möchten je nachdem wie der User auf unsere Seiten gelangt ist, ihm immer wieder die gleiche Startseite zeigen. Ideal um verschiedene Startseiten zu testen. Die Landingpage im Pfad landingpages/ setzt ein Cookie.
Das Cookie wird dann in der eigentlichen Startdatei im Pfad / ausgelesen.

Landingpage:
var filename = "ostern.html";
cookie_set("landingpage", filename, verfallsdatum.getTime(), teile.join("/")+"/");

Eigentliche Startseite:
if (cookie_get("landingpage")) {
  var bereich = cookie_get("landingpage");
  return document.location.href = "landingpages/"+encodeURIComponent(bereich);  
}

Fazit
Mit diesen Funktionen kann man sehr leicht sein Framework ausbauen und eine simple einfache Cookie-Behandlung nutzen. Ausbaufähig ist eine Cookie-Speicherung von komplexeren Werten. Jedoch sollte man nicht vergessen, dass Cookies nicht unbedingt sehr sicher sind, immer an die Domain mitgesendet werden und eigentlich nur für nicht wichtige Bestandteilen gedacht ist. Ich würde keine komplexen Daten dort sichern, da einige Clients die Cookie Unterstützung deaktivieren.

Saso Nikolov

Keine Kommentare:

Kommentar veröffentlichen