JavaScript Cookies

Cookies ermöglichen es Ihnen, Benutzerinformationen auf Webseiten zu speichern.

Was ist ein Cookie?

Cookies sind Daten, die in kleinen Textdateien auf Ihrem Computer gespeichert werden.

Nachdem der Webserver eine Webseite an den Browser gesendet hat, wird die Verbindung geschlossen und der Server vergisst alles über den Benutzer.

Cookies wurden erfunden, um die Frage zu beantworten: "Wie kann man Benutzerinformationen merken?"

  • Wenn ein Benutzer eine Webseite besucht, kann sein Name in einem Cookie gespeichert werden.
  • Wenn der Benutzer die Seite das nächste Mal besucht, wird der Cookie seinen Namen "merken".

Cookies werden in Namen-Wert-Paaren gespeichert, z.B.:

username = Bill Gates

Wenn der Browser eine Webseite von einem Server anfordert, werden die Cookies der Seite zu dieser Anfrage hinzugefügt. Auf diese Weise erhält der Server die notwendigen Daten, um Informationen des Benutzers "zu erinnern".

Funktionieren die folgenden Beispiele nicht, wenn der Browser keine lokale Cookie-Unterstützung hat:

Mit JavaScript können Sie Cookies erstellen

JavaScript kann document.cookie Eigenschaften zum Erstellen, Lesen und Löschen von Cookies.

Mit JavaScript können Sie so Cookies erstellen:

document.cookie = "username=Bill Gates";

Sie können auch eine Gültigkeitsdauer (UTC-Zeit) hinzufügen. Standardmäßig werden Cookies, wenn der Browser geschlossen wird, gelöscht:

document.cookie = "username=Bill Gates; expires=Sun, 31 Dec 2017 12:00:00 UTC";

Durch path Parameter, mit denen Sie dem Browser mitteilen können, welchen Pfad der Cookie gehört. Standardmäßig gehört der Cookie zur aktuellen Seite.

document.cookie = "username=Bill Gates; expires=Sun, 31 Dec 2017 12:00:00 UTC; path=/";

Cookie durch JavaScript lesen

Durch JavaScript können Sie Cookies so lesen:

var x = document.cookie;

document.cookie Gibt alle Cookies in einer Zeichenkette zurück, zum Beispiel: cookie1=value; cookie2=value; cookie3=value;

Cookie durch JavaScript ändern

Durch die Verwendung von JavaScript können Sie es so ändern, wie Sie es erstellt haben:

document.cookie = "username=Steve Jobs; expires=Sun, 31 Dec 2017 12:00:00 UTC; path=/";

Der alte Cookie wird überschrieben.

Cookie durch JavaScript löschen

Die Löschung eines Cookies ist sehr einfach.

Bei der Löschung eines Cookies müssen Sie den Cookie-Wert nicht angeben:

Direkt expires Setzen Sie den Parameter auf ein vergangenes Datum:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

Sie sollten den Cookie-Pfad definieren, um sicherzustellen, dass der richtige Cookie gelöscht wird.

Einige Browser lassen Sie nicht, Cookies zu löschen, wenn Sie den Pfad nicht angeben.

Cookie-String

document.cookie Das Attribut scheint wie ein normaler Textstring zu sein. Aber das ist nicht der Fall.

Selbst wenn Sie document.cookie Schreiben Sie einen vollständigen Cookie-String, wenn Sie ihn erneut lesen, sehen Sie nur seinen Namen-Wert-Paaren.

Wenn ein neuer Cookie gesetzt wird, wird der alte Cookie nicht überschrieben. Der neue Cookie wird zu document.cookie hinzugefügt, daher wenn Sie document.cookie lesen, erhalten Sie etwas wie dieses:

cookie1 = value; cookie2 = value;
     

Wenn Sie den Wert eines bestimmten Cookies finden möchten, müssen Sie eine JavaScript-Funktion schreiben, um den Cookie-Wert in der Cookie-Zeichenfolge zu suchen.

JavaScript Cookie Beispiel

Im folgenden Beispiel erstellen wir ein Cookie, um den Namen des Besuchers zu speichern.

Wenn ein Besucher zum ersten Mal die Webseite besucht, wird er aufgefordert, seinen Namen einzugeben. Dieser Name wird dann im Cookie gespeichert.

Wenn ein Besucher zum ersten Mal die gleiche Seite besucht, erhält er eine Begrüßungsnachricht.

Zum Beispiel erstellen wir 3 JavaScript-Funktionen:

  1. Funktion zum Setzen des Cookie-Werts
  2. Funktion zum Abrufen des Cookie-Werts
  3. Funktion zum Überprüfen des Cookie-Werts

Funktion zum Setzen eines Cookies

Zunächst erstellen wir eine Funktion, um den Namen des Besuchers in der Cookie-Variable zu speichern:

Beispiel

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+ d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
} 

Beispielexplanation:

Die Parameter dieser Funktion sind: der Name des Cookies (cname), der Wert des Cookies (cvalue) und die Anzahl der Tage, bis das Cookie abläuft (exdays).

Durch Hinzufügen des Cookie-Namens, des Cookie-Werts und des Ablaufdatums wird die Funktion das Cookie gesetzt.

Funktion zum Abrufen eines Cookies

Dann erstellen wir eine Funktion, die den Wert eines bestimmten Cookies zurückgibt:

Beispiel

function getCookie(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(';');
    for(var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
         }
         if (c.indexOf(name) == 0) {
            return c.substring(name.length, c.length);
         }
     }
    return "";
} 

Funktionserklärung:

Geben Sie den Cookie als Parameter (cname) weiter.

Erstellen Sie eine Variable (name) und den zu suchenden Text (CNAME"=").

Decodieren Sie den Cookie-Zeichenfolge, verarbeiten Sie Cookies mit speziellen Zeichen, wie z.B. "$".

Teile document.cookie durch Semikolons in das Array ca (decodedCookie.split(';')) auf.

Durchlaufe das Array ca (i = 0; i < ca.length; i++) und lies jeden Wert c = ca[i] aus.

Falls ein Cookie gefunden wird (c.indexOf(name) == 0), wird der Wert des Cookies zurückgegeben (c.substring(name.length, c.length)).

Falls kein Cookie gefunden wird, wird "" zurückgegeben.

Funktion zur Überprüfung von Cookies

Schließlich erstellen wir eine Funktion, um zu überprüfen, ob ein Cookie gesetzt ist.

Falls ein Cookie bereits gesetzt ist, wird eine Begrüßung angezeigt.

Falls kein Cookie gesetzt ist, wird ein Hinweis angezeigt, in dem der Benutzer nach seinem Namen gefragt wird, und der Benutzername wird als Cookie für 365 Tage gespeichert, indem setCookie Funktion:

Beispiel

function checkCookie() {
    var username = getCookie("username");
    if (username != "") {
        alert("Willkommen zurück " + username);
    }
        username = prompt("Bitte geben Sie Ihren Namen ein:", "");
        if (username != "" && username != null) {
            setCookie("username", username, 365);
        }
    }
} 

Zusammengefasst

Beispiel

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') {
            c = c.substring(1);
         }
        if (c.indexOf(name)  == 0) {
            return c.substring(name.length, c.length);
         }
    }
    return "";
}
function checkCookie() {
    var user = getCookie("username");
    if (user != "") {
        alert("Willkommen wieder " + user);
    }
        user = prompt("Bitte geben Sie Ihren Namen ein:", "");
        if (user != "" && user != null) {
            setCookie("username", user, 365);
        }
    }
}

Probieren Sie es selbst aus

Der obige Beispiel wird nach dem Laden der Seite die Funktion checkCookie() ausführen.