Schrift
[thread]2168[/thread]

Cookies nur einmal?



<< >> 5 Einträge, 1 Seite
silbersteine
 2003-11-18 09:51
#25304 #25304
User since
2003-08-18
27 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo,

ich habe ein kleines Problem. Jetzt habe ich mich schon so weit durchgekämpft, dass ich als Javascript-Analphabet Cookies schreiben und lesen kann, doch irgendwie will das immer nur einmal (!) gelingen - ich kann den Keks nicht mehr ändern. Sprich: Auf der ersten Web-Seite (Eingangsseite) frage ich ab, ob schon ein Cookie hinterlegt worden ist. Ist das nicht der Fall, soll 1. ein Cookie mit dem aktuellen URL hinterlegt werden und 2. im gleichen Verzeichnis die Seite check.shtml aufgerufen werden. Code (Funktionen Wertholen und setcookie siehe unten):

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
<script type="text/javascript">
<!--
var x = WertHolen();
var url = document.URL;
if(x != 18) {
window.document.cookie="url=" + url + ";path=/;";
self.location.replace("check.shtml");
}

//-->
</script>


Das funktioniert auch schon einmal. Jetzt zur Check-Seite: Hier soll per Formular abgefragt werden, ob der Besucher schon 18 ist, dies im Cookie gespeichert und zur Ursprungsseite zurückgekehrt werden, die im Cookie gespeichert ist:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
<script TYPE="text/javascript">
<!--

var url = WertHolen();
document.write(url + "<form onSubmit=\"setcookie()\" action=\"" + url + "\" method=\"get\" target=\"_top\">");

// -->
</SCRIPT>
<NOSCRIPT><p>Diese Seite funktioniert nur mit Javascript. Sie müssen in Ihrem Browser Javascript aktivieren, bzw. einen Browser verwenden, der damit umgehen kann.</p></NOSCRIPT>
<input name="yes" type="submit" value="Ja, ich bin über 18"></TD><TD><form action="http://www.skriptoase.de/cgi-bin/rand_link.pl" method="get" target="_top"><input name="no" type="submit" value="Nein, ich gehe lieber wieder"></form>


Auch dies funktioniert für sich allein getestet wunderbar. Das Problem ist jetzt nur, dass immer nur einmal der Cookie beschrieben wird. Sprich: Ist der URL schon drin gespeichert, schreibt der Browser später nicht mehr Zaehler=18 rein (den URL brauche ich ja dann nicht mehr im Cookie), ist die 18 schon drin, schreibt er später nichts anderes mehr rein. Das kann doch nicht sein! Man muss doch einen Cookie noch ändern können, oder? Kann mir jemand helfen?

Die Funktionen:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function WertHolen() {
var Wert = "";
if(document.cookie) {
 var Wertstart = document.cookie.indexOf("=") + 1;
 var Wertende = document.cookie.indexOf(";");
 if (Wertende == -1)
  Wertende = document.cookie.length;
 Wert = document.cookie.substring(Wertstart,Wertende);
}
return Wert;
}

 function setcookie() {
   window.document.cookie = "Zaehler=18;path=/;";
   }
Viele Grüße aus Calberlah

Der SilberStein

<a href="http://www.skriptoase.de/">www.skriptoase.de</a>

# "It's all very perlish" (L.Wall)
silbersteine
 2003-11-18 22:56
#25305 #25305
User since
2003-08-18
27 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hilfe! Kann mir denn keiner helfen? Kennt sich denn hier jemand mit Cookies aus (auch wenn's n Perl-Forum is, sorry!)?
Viele Grüße aus Calberlah

Der SilberStein

<a href="http://www.skriptoase.de/">www.skriptoase.de</a>

# "It's all very perlish" (L.Wall)
Ronnie
 2003-11-18 23:08
#25306 #25306
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Hallo silbersteine, zur Zeit ist das Board ein wenig dünn besetzt, weil die meisten, der Konjunktur zum Trotz, schwer beschäftigt sind. Mit Cookies kenne ich mich leider kaum aus, empfehle dir aber: SELFHTML dort existiert auch ein Forum, wo man dir sicher weiterhelfen kann. Vieleicht meldet sich aber auch hier noch einer der dir helfen kann.
jan
 2003-11-19 01:26
#25307 #25307
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
ich habe mich redlich bemüht, bin aber dennoch gescheitert bei dem versuch, dein problem zu verstehen ...
also ein paar fragen:
welche cookies sollen an welchem punkt gesetzt werden?
sollen zu irgendwelchen zeiten cookies gelöscht / geändert werden?
ja, soweit erstmal, vielleicht trägt das zur klärung bei. nebenbei, vielleicht ist das schon ein lösungshinweis: bedenke, dass die cookies afair in einem string in document.cookie lagern, d.h., wenn du an alle herankommen willst, musst du auch alle auslesen, nicht nur den ersten wert, den du bekommst.
das hier habe ich mal irgendwann geschrieben, um den cookie "session" auszulesen, den ich vorher gesetzt hatte (war ne clientseitige billig-session-lösung, nur, um zu prüfen, ob der besucher in dieser session schon auf der homepage war, ärztliches standesrecht und so), vielleicht hilft das ja:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
<script language="JavaScript">
var sessionok = 0;
var allCookies = document.cookie.split(" ");
for (i=0; i < allCookies.length; i++)
{
if(allCookies[i].substr(0, 8) == "session=")
{
sessionok = allCookies[i].substr(8,(allCookies[i].length - allCookies[i].lastIndexOf(";")));
}
}
</script>


der cookie-content befindet sich anschließend in sessionok. das könnte man sicher umschreiben, um alle cookies in einen array zu packen.
KKO
 2003-11-23 16:33
#25308 #25308
User since
2003-11-05
124 Artikel
BenutzerIn

user image
das die einträge in einen vorhandenen cookie nicht in einem string gemacht werden können, habe ich bei dem IE auch schon gemerkt. (vielleicht ist ja auch nur beim IE so )
aber es geht, wenn jeder eintrag separat gemacht wird.
Code: (dl )
1
2
3
4
function setcookie() {
  document.cookie = "Zaehler=18";
  document.cookie ="path=/";
  }
Gruß
KKO
<< >> 5 Einträge, 1 Seite



View all threads created 2003-11-18 09:51.