Hallo,
Ich hab mal eine Frage zu Cookies: Kann man in Cookies mehrere eindeutige Variablen speichern? Ich möchte eine Lernumgebung programmieren, wo der Nutzer viele Daten auf unterschiedlichen HTML Seiten eingibt. Diese Daten (variablen) sollen erst zum Schluss
ausgewertet werden. Nun, ist es ratsam das über cookies zu realisieren und wenn ja wie? - oder gibt es gar noch andere, günstigere Lösungen/Möglichkeiten?
mfg, RObin.
Hallo Robin,
ich hatte mal ein kleines Testprogramm für Cookies in JavaScript geschrieben. Ist nur auf IE getestet. Hier kommts:
-Schnipp---Datensatz:cookies.js------------------
//////////////// (c) Hans@Stortnik.de
// cookies.js // Das Programm kann für private Zwecke frei benutzt werden.
////////////////
//
// Mit "cookie_write" wird ein "name" und ein zugehöriger "wert" beim Betrachter
// der Webseite gespeichert, und mit "cookie_read" kann "wert" wieder gelesen
// werden, wenn nach "name" gefragt wird. "name" und "wert" sind Strings.
// Mehrere solcher name/wert-Paare sind möglich und werden im selben Cookie
// abgespeichert, getrennt durch Semikolon. Um in "wert" auch Semikolons und
// Gleichheitszeichen zulassen zu können, werden diese als die Zeichen "Ý"
// bzw. Ð abgespeichert. Das Zuweisungsende wird mit"Þ" markiert; dadurch ist
// in "wert" auch eine Zeichenfolge zugelassen, die bei einem anderen Parameter
// mit "name" übereinstimmt.
// Die Angabe der Verfallszeit "verfall", gerechnet in sec ab dem Setzen der
// Variablen in dem Cookie, ist obligatorisch. (Beispiel: Für eine 1 Jahr gültige
// Variable ist 365*24*60*60 anzugeben.) Jede Variable "name" hat ihre eigene
// Verfallszeit.
// Cookies werden bei ihrer erstmaligen Erzeugung automatisch dem Verzeichnis der
// URL der aktuellen Webseite zugeordnet und können danach auch in deren Unter-
// verzeichnissen benutzt werden. Falls bei einem Leseversuch ein Cookie oder die
// abgefragte Variable nicht vorhanden sind, wird ein Nullstring zurückgegeben.
//
// Cookie schreiben
// ----------------
function cookie_write (name, wert, verfall) {
var name, wert, verfall;
var n = name.replace(/=/g,"Ð");
n = n.replace(/;/g,"Ý");
var w = wert.replace(/=/g,"Ð");
w = w.replace(/;/g,"Ý");
var d = new Date();
var t = new Date(d.getTime() + verfall*1000);
document.cookie=n+"="+w+"Þ;expires="+t.toGMTString()+";" ;
}
//
// Cookie lesen
// ------------
function cookie_read (name) {
var name;
var n = name.replace(/=/g,"Ð");
n = n.replace(/;/g,"Ý")+"=";
var wert="";
var w=document.cookie;
// alert(w); // Test
var u=w.indexOf(n,0);
if (u > -1) {
u=u + n.length;
if (u>n.length) {
u=w.indexOf("Þ; "+n,0);
if (u>-1) {u=u+n.length+3} else {w=""};
}
w = w.substring(u,w.indexOf("Þ",u));
w = w.replace(/Ý/g,";");
wert = w.replace(/Ð/g,"=");
}
return wert;
-schnapp----------------------------------------
-schnipp---------Datensatz:cookie-Test.htm------
<html>
<head><title>Cookie-Schreib-Test</title></head>
<script language="JavaScript" src="./cookies.js"
type="text/javascript"> </script>
<body bgcolor="#ffeeee">
<center>
<h2><br>Cookie-Schreib-Test<br><br></h2>
<h3>
Es wird ein Name (eine beliebige Zeichenfolge) eingegeben,<br>
ein zugehöriger Wert (auch eine beliebige Zeichenfolge)<br>
und ausserdem eine Verfallszeit in Sekunden, <br>
die angibt, wie lange die Zuordnung von Name und Wert gelten soll.<br>
Nach Anklicken von "Speichern" ist die Zuordnung als ein <i>Cookie </i>gespeichert.<br>
Durch Abfrage des richtigen Namens kann der Wert wiederbeschafft werden,<br>
solange die Verfallszeit nicht überschritten ist,<br>
auch wenn der Rechner zwischenzeitlich neu gestartet wurde.<br><br>
<form name="F1" onSubmit="cookie_write(
document.F1.N.value,
document.F1.W.value,
document.F1.V.value
)">
Name: <input type=text name="N" size=40 maxlength=256><br>
Wert: <input type=text name="W" size=39 maxlength=256><br><br>
Verfall: <input type=text name="V" size=35 maxlength=256><br><br>
<input type=submit value="Abspeichern"><br><br>
</form>
<form name="F2" onSubmit="alert(
document.F2.N.value
+ ' = '
+ cookie_read( document.F2.N.value)
)">
Name: <input type=text name="N" size=40 maxlength=256><br>
<input type=submit value="Lesen"><br><br>
</form>
<br><br>
</h3>
</center>
</body></html>
-Schnapp------------------------------------------
Ist alles ausreichend selbsterklärend? Vielleicht hilft's dir weiter.
Gruss
Hans35