Tips & Tricks: Cookies Teil 2 |
Auf Grund einer Nachfrage in unserem Forum, wird in diesem Tip die Verwendung eines Cookies für einen Counter erklärt. Beachten Sie bitte, daß ein Counter durch einen Cookie nur für den jeweiligen Anwender Werte liefert. Wird die Datei 'cookie.txt' im Navigator-Verzeichnis gelöscht, ist auch der Zählerstand verloren. Als Ersatz fⁿr eine Web-Counter ist ein Cookie somit ungeeignet. Nun aber zu unserem Script. Im Header-Bereich benötigen wir zunächst folgende allgemeine Funktionen:
function GetCookie (name) { var arg = name + "="; var alen = arg.length; var clen = document.cookie.length; var i = 0; while (i < clen) { var j = i + alen; if (document.cookie.substring(i, j) == arg) return getCookieVal (j); i = document.cookie.indexOf(" ", i) + 1; if (i == 0) break; } return null; } function SetCookie (name, value) { var argv = SetCookie.arguments; var argc = SetCookie.arguments.length; var expires = (argc > 2) ? argv[2] : null; var path = (argc > 3) ? argv[3] : null; var domain = (argc > 4) ? argv[4] : null; var secure = (argc > 5) ? argv[5] : false; document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : ""); } function DeleteCookie (name) { var exp = new Date(); exp.setTime (exp.getTime() - 1); // This cookie is history var cval = GetCookie (name); document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString(); }
Nachdem wir nun die allgemeinen Cookie-Funktionen gesetzt haben, folgen die Anweisungen für den Counter:
var expDays = 30; var exp = new Date(); exp.setTime(exp.getTime() + (expDays*24*60*60*1000)); function amt(){ var Kakao_Kekse_Cookie_Demo_2 = GetCookie('Kakao_Kekse_Cookie_Demo_2') if(Kakao_Kekse_Cookie_Demo_2 == null) { SetCookie('Kakao_Kekse_Cookie_Demo_2','1') return 1 } else { var newcount = parseInt(Kakao_Kekse_Cookie_Demo_2) + 1; DeleteCookie('Kakao_Kekse_Cookie_Demo_2') SetCookie('Kakao_Kekse_Cookie_Demo_2',newcount,exp) return Kakao_Kekse_Cookie_Demo_2 } } function getCookieVal(offset) { var endstr = document.cookie.indexOf (";", offset); if (endstr == -1) endstr = document.cookie.length; return unescape(document.cookie.substring(offset, endstr)); }
In der Variablen expDays geben Sie die Dauer in Tagen an, für die der Cookie gültig sein soll. In unserem Beispiel sind das also 30 Tage. Ersetzen Sie nun den Cookie-Namen Kakao_Cookie_Demo_2 durch eine eigene Bezeichnung. Sie würden sonst mit unserem Cookie durcheinander geraten :-) Nun ist unser Counter fertig. Im Dokument müssen wir nur noch den Cookie aufrufen:
<SCRIPT LANGUAGE="JavaScript"> <!-- document.write("Sie haben diesen Tip nun bereits " + amt() + " mal gelesen.") //--> </SCRIPT>