shadowhunter: Cookie speichern & lesen

Hallo!

Mein Script soll folgende funktion erfüllen:
Beim ersten Besuch der Seite wird ein Fenster mit "Nutzungsbedingungen....." (Siehe im Code) angezeigt. Sobald der OK-Knopf betätigt wird, wird ein Cookie gespeichert.
Beim nächsten Besuch des gleichen Users auf der gleichen Seite kommt KEIN Fenster mehr. Das Cookie wird automatisch vom Browser nach 1 Tag gelöscht.
Die Grundfunktionen vom abspeichern des Cookies funktioniert, aber dass dies so harmoniert, wie ich es wünschte, geht bis jetzt noch nicht.
Könnt ihr mir helfen?
Vielen Dank für eure Hilfe
mfg

CODE:

<html>
<head>
<title>Test</title>

<script type="text/javascript">

function cookie () {

if (navigator.cookieEnabled == true) {
<!--Cookies erlaubt-->

<!-- Cookie definitionen -->
    var name = "scluzern-galerie";
    var data = 1;   // Übergabewert
    var days = 1;  // 1 - XXX
    var hours = 24;  // 1 - 24
    var minutes = 60;  // 1 - 60

var wert = "";
  if(document.cookie)
  {
    Wert = document.cookie;
    Wert = Wert.slice(Wert.indexOf("=")+1,Wert.length);

Check = confirm("Nutzungsbedingungen für die Fotos/Bilder durchgelesen & akzeptiert? > http://impressum.scluzern.com <");

if (Check == false)
   {
     <!-- Cookie löschen -->
     document.cookie = name + "=" + data +"; expires=Thu, 01-Jan-1970 00:00:01 GMT";
     history.back();
   }

}

else {
  <!--Cookie schreiben-->
    var expires = new Date();
    var expires_date = expires.getTime() + (days * hours * minutes * 60 * 1000);
    expires.setTime(expires_date);
    document.cookie = name + "=" + data +"; expires="+ expires.toGMTString() +";";

}

} else if (navigator.cookieEnabled == false) {
<!--Cookies verboten-->

Check = confirm("Nutzungsbedingungen für die Fotos/Bilder durchgelesen & akzeptiert?");
 if (Check == false)
  history.back();

} else {
<!--Cookies - Verrate ich nicht-->

Check = confirm("Nutzungsbedingungen für die Fotos/Bilder durchgelesen & akzeptiert?");
 if (Check == false)
  history.back();

}
}
</script>

</head>
<body Onload="cookie()">

</body>
</html>

  1. hi,

    Die Grundfunktionen vom abspeichern des Cookies funktioniert, aber dass dies so harmoniert, wie ich es wünschte, geht bis jetzt noch nicht.
    Könnt ihr mir helfen?

    Das können wir gerne versuchen, wenn du uns eine nachvollziehbare Problembeschreibung lieferst.

    "Harmoniert nicht" ist zwar mal etwas anderes alsdas gewohnte "funzt nicht" - sagt aber auch nicht viel mehr aus.

    Also: Was erwartest du, was passiert stattdessen?
          Welche Kontrollausgaben hast du wann vorgenommen, was waren die Ergebnisse?

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Sorry:
      Also beim ersten Besuch wird gar kein Fenster (popup mit OK & Abbrechen) angezeigt & kein Cookie.
      Ab dem 2. Besuch wird immer ein Fenster angezeigte & ein Cookie gespeichert.
      Jedoch sollte nur beim 1. Besuch das Popup angezeigt werden & sobald der OK gedrückt wird, sollte ein cookie gespeichert werden.
      Die Funktion Cookie löschen funktioniert perfekt, wenn man auf "Abbrechen" Drückt!
      Merci!
      mfg shadowhunter

      1. hi,

        Jedoch sollte nur beim 1. Besuch das Popup angezeigt werden & sobald der OK gedrückt wird, sollte ein cookie gespeichert werden.

        Gut - dann ziege doch bitte, wie du das in deinem Code versucht hast umzusetzen - bitte _mit_ Kommentieren, was genau du wo versuchst.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Meine Schwierigkeit ist bei dem lesen des Cookies. Wie kann man überprüfen, ob bereits ein Cookie gespeichert worden ist?
          Geht dies mit dem folgendem Code? Hast du eine bessere Lösung?

          var wert = "";
            if(document.cookie)
            {
              Wert = document.cookie;
              Wert = Wert.slice(Wert.indexOf("=")+1,Wert.length);
            }
            else {
          ..... }

          Also wenn kein Cookie gespeichert ist, sollte folgenden Code abgearbeitet werden müssen (Ansosten sollte nur die Webseite geladen werden, ohne Popup):

          Check = confirm("Nutzungsbedingungen für die Fotos/Bilder durchgelesen & akzeptiert? > http://impressum.scluzern.com <");

          if (Check == false)
             {
               <!-- Cookie löschen -->
               document.cookie = name + "=" + data +"; expires=Thu, 01-Jan-1970 00:00:01 GMT";
               history.back();
             }
             else if (Check == true)
             {
               <!--Cookie schreiben-->
                var expires = new Date();
                var expires_date = expires.getTime() + (days * hours * minutes * 60 * 1000);
                expires.setTime(expires_date);
                document.cookie = name + "=" + data +"; expires="+ expires.toGMTString() +";";
             }

          Hier passiert (sollte) folgendes:
          Sobald bei dem popup (confirm("Nutzungsbedingungen.....) auf OK gedrückt wird, wird das cookie gespeichert
          Jedoch wenn auf "Abbrechen" gedrückt wird, wird das cookie gelöscht

          vielen dank für deine bemühnungen

          1. hi,

            Meine Schwierigkeit ist bei dem lesen des Cookies. Wie kann man überprüfen, ob bereits ein Cookie gespeichert worden ist?

            In dem man sich den Inhalt von document.cookie anschaut.
            Die Cookie_s_ aus dem aktuellen Gültigkeitsbereich sind darin in der Form Cookiename=Wert abgelegt. Mehrere dieser Paare sind durch "; " voneinander getrennt.

            Geht dies mit dem folgendem Code?

            Wert = document.cookie;
                Wert = Wert.slice(Wert.indexOf("=")+1,Wert.length);

            Damit überprüfst du lediglich, ob ein = drin vorkommt.
            Das besagt aber noch nicht, um welchen Cookie es sich handelt - vielleicht setzt deine Seite ja mehrere, und der den du aktuell suchst, der ist gar nicht darunter?

            Also wenn kein Cookie gespeichert ist, sollte folgenden Code abgearbeitet werden müssen

            Du hast nur geprüft, ob document.cookie als true interpretiert wird - das dürfte zu wenig sein, s.o.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. Das besagt aber noch nicht, um welchen Cookie es sich handelt
              Du hast nur geprüft, ob document.cookie als true interpretiert wird - das dürfte zu wenig sein, s.o.

              Wie kann ich denn das machen? Wie muss ich den code erweitern? Ich wusste, dass war mein Problem...
              mfg

              1. hi,

                Das besagt aber noch nicht, um welchen Cookie es sich handelt
                Du hast nur geprüft, ob document.cookie als true interpretiert wird - das dürfte zu wenig sein, s.o.

                Wie kann ich denn das machen? Wie muss ich den code erweitern?

                Was haben denn deine bisherigen Überlegungen erbracht?

                document.cookie ist also ein String, und der kann ein mal "Name=Wert", oder mehrmals "Name=Wert; Name=Wert; Name=Wert; ..." enthalten.
                Wie gehen wir denn da wohl am besten ran? Vielleicht schauen wir erst mal bei den Methoden des String-Objektes?

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }
                1. Indem man vieleicht eine Zählschlaufe einbaut?
                  Hmmm aber auch beim ersten Besuch der Seite wenn noch kein Cookie abgespeichert ist, wird das pop up nicht geladen...
                  ich benutze nur ein cookie pro webseite, also spielt dies keine rolle.
                  danke, mfg

                  1. hi,

                    Indem man vieleicht eine Zählschlaufe einbaut?

                    Die was zählen soll?

                    Nochmal: Wir haben mit document.cookie zunächst nur alle potentiellen Cookies in _einem_ String - wenn wir also die einzelnen Cookies zählen wollen, müssen wir den erst mal auseinanderpfriemeln.

                    gruß,
                    wahsaga

                    --
                    /voodoo.css:
                    #GeorgeWBush { position:absolute; bottom:-6ft; }
                    1. Weiss nicht wie man das machen kann.
                      mfg shadowhunter

                      1. hi,

                        Weiss nicht wie man das machen kann.

                        Nur mit "weiss nicht" und "keine Ahnung" kommen wir aber nicht weiter.

                        Wir haben einen String vorliegen, einen Blick auf die Methoden diese Objektes legte ich dir bereits nahe - und da finden wir z.B. die Methode split. Nun, was könnten wir mit der jetzt zunächst mal versuchen, um aus "Name=Wert; Name=Wert; Name=Wert; ..." einzelne Teile zu machen?

                        gruß,
                        wahsaga

                        --
                        /voodoo.css:
                        #GeorgeWBush { position:absolute; bottom:-6ft; }
                        1. Moin

                          @wahsaga:
                          was du machst nennt sich Osterhasenpädagogik: der Lehrer versteckt das (sein) Wissen und die Schüler müssen's suchen.

                          Gruß
                          rfb

                          1. Hallo!

                            was du machst nennt sich Osterhasenpädagogik: der Lehrer versteckt das (sein) Wissen und die Schüler müssen's suchen.

                            Es heißt hier zwar _SELF_HTML, aber da wurde imho wirklich zuviel self erwartet.
                            gruß, aikidoka

                          2. hi,

                            was du machst nennt sich Osterhasenpädagogik: der Lehrer versteckt das (sein) Wissen und die Schüler müssen's suchen.

                            Was dabei rauskommt, wenn verwöhnte Kinder absolut alles zu Weihnachten kriegen, was auch immer sie haben wollen, lässt sich an breiten Teilen der heutigen Gesellschaft gut beobachten.

                            gruß,
                            wahsaga

                            --
                            /voodoo.css:
                            #GeorgeWBush { position:absolute; bottom:-6ft; }
                        2. Hatte gestern keine Zeit mehr, an diesem zu ausprobieren.
                          Mein Script funktioniert soweit, so dass wenn irgenein Cookie von der Webseite existiert, wird die richtige ausgabe erzeugt.
                          Als nächstes möchte ich das Cookie auf einen BESTIMMTEN Inhalt überprüfen, der ich beim erzeugen des Cookies hineingeschrieben habe (>> bestimmten Name & bestimmten Wert)
                          Wie kann ich jetzt diesen Namen und Wert wieder ausfindig machen?
                          Vielen Dank!
                          mfg shadowhunter

                          1. hi,

                            Als nächstes möchte ich das Cookie auf einen BESTIMMTEN Inhalt überprüfen, der ich beim erzeugen des Cookies hineingeschrieben habe (>> bestimmten Name & bestimmten Wert)
                            Wie kann ich jetzt diesen Namen und Wert wieder ausfindig machen?

                            Posting noch mal lesen, auf welches du gerade geantwortet hast.

                            gruß,
                            wahsaga

                            --
                            /voodoo.css:
                            #GeorgeWBush { position:absolute; bottom:-6ft; }
                            1. Cookie lesen = GetCookie();
                              Überprüfe bitte, ob ich bei den Funktionen die Eingabewerte & Rückgabewerte richtig gemacht habe. Merci

                              function SetDefault() {

                              <!-- Cookie definitionen -->
                                var name = "scluzern-galerie"; // Name der Cookie
                                var wert = "nutzung";  // Übergabewert
                                var days = 1;   // 1 - XXX
                                var hours = 1;   // 1 - 24
                                var minutes = 1;  // 1 - 60
                                return name, wert, days, hours, minutes;

                              }

                              function SetCookie(name, wert, days, hours, minutes) {

                              <!--Cookie schreiben-->
                                var expires = new Date();
                                var expires_date = expires.getTime() + (days * hours * minutes * 60 * 1000);
                                expires.setTime(expires_date);
                                document.cookie = name + "=" + wert +"; expires="+ expires.toGMTString() +";";

                              }

                              function GetCookie() {

                              wert_akt = document.cookie;
                                wert_akt = wert_akt.slice(wert_akt.indexOf("=")+1,wert_akt.length);
                                return wert_akt();

                              }

                              function ClearCookie(name, wert) {

                              <!-- Cookie löschen -->
                                document.cookie = name + "=" + wert +"; expires=Thu, 01-Jan-1970 00:00:01 GMT";

                              }

                              ----------------
                              Funktionsaufrufe:

                              SetDefault();
                              GetCookie(wert_akt);
                              ClearCookie(name, wert);
                              SetCookie(name, wert, days, hours, minutes);

                              ---------------
                              Überprüfung des Inhaltes des Cookies:
                              var wert_akt = "";
                                if (document.cookie)
                                {
                                  GetCookie(wert_akt);
                                  if (wert_akt == wert) {

                              ........

                              Funktioniert dies so mit den Funktionsaufrufe. Habe vorher meinen Programmcode etwas übersichtlicher gemacht, dh mit funktionsaufrufen. Jedoch habe ich im Explorer einen Fehler des Codes...
                              mfg

                              1. function SetDefault() {

                                <!-- Cookie definitionen -->

                                Nur zur Information, JS Kommentare sehen anders aus, nicht jeder Browser ignoriert HTML Kommentare im Skriptblock.

                                Eigentlich auch unverständlich dass ein Browser das ignoriert, es ist ja durchaus JS Code der interpretiert werden kann.
                                < => kleiner als
                                ! => nicht
                                -- => minus eins
                                Cookie => eine Variabel
                                ..

                                var name = "scluzern-galerie"; // Name der Cookie
                                  var wert = "nutzung";  // Übergabewert
                                  var days = 1;   // 1 - XXX
                                  var hours = 1;   // 1 - 24
                                  var minutes = 1;  // 1 - 60
                                  return name, wert, days, hours, minutes;

                                }

                                Mir ist nicht klar was du hier willst, du definierst lokale (also nur in der Funktion sichtbare) Variabeln, die du an den Aufrufer zurückgibst, nur der macht damit nichts.

                                function GetCookie() {

                                wert_akt = document.cookie;
                                  wert_akt = wert_akt.slice(wert_akt.indexOf("=")+1,wert_akt.length);
                                  return wert_akt();

                                }

                                Das verstehe ich nicht.
                                wert_akt ist kein Array() d.h. es sollte die Funktion slice gar nicht kennen, nach Aufruf der unbekannten Funktion slice() ist wert_akt auf einmal eine Funktionsreferenz?

                                Funktioniert dies so mit den Funktionsaufrufe. Habe vorher meinen Programmcode etwas übersichtlicher gemacht, dh mit funktionsaufrufen. Jedoch habe ich im Explorer einen Fehler des Codes...

                                Die Meldung lautet?

                                Aber ich würde dir sowieso empfehlen einen anderen Browser zu benutzen um JS Code zu testen. Der IE ist einerseits was das angeht sehr unzuverlässig, da er macht was er für richtig hält und anderseits bei Fehlern sehr vage bleibt.

                                Der Firefox z.b. hält sich genauer an die Spielregeln und sagt dir sehr präzise was du falsch gemacht hast.

                                Übrigens, wenn du keinen Bock hast auf lernen kann ich dir google empfehlen, dass was du möchtest, sollte Millionenfach im Netz zu Verfügung stehen.

                                Struppi.

                                --
                                Javascript ist toll (Perl auch!)
                                1. Ich bin in der Firma & da habe ich nor den Explorer & den Editor zur Verfügung.
                                  Wie kann ich am einfachsten & am besten Javascript testen/schreiben?
                                  Geht dies mit Eclipse auch?
                                  Firefox bietet eine solche Funktion?
                                  Vielen Dank

                                  Hier noch meinen ganzen Code, welcher nicht funktioniert (vieleicht siehts du sicher noch grobe Fehler):

                                  <script type="text/javascript">

                                  function SetDefault() {

                                  <!-- Cookie definitionen -->
                                    var name = "scluzern-galerie"; // Name der Cookie
                                    var wert = "nutzung";   // Übergabewert
                                    var days = 1;    // 1 - XXX
                                    var hours = 1;   // 1 - 24
                                    var minutes = 1;   // 1 - 60
                                    return name, wert, days, hours, minutes;

                                  }

                                  function SetCookie(name, wert, days, hours, minutes) {

                                  <!--Cookie schreiben-->
                                    var expires = new Date();
                                    var expires_date = expires.getTime() + (days * hours * minutes * 60 * 1000);
                                    expires.setTime(expires_date);
                                    document.cookie = name + "=" + wert +"; expires="+ expires.toGMTString() +";";

                                  }

                                  function GetCookie(wert_akt) {

                                  wert_akt = document.cookie;
                                    wert_akt = wert_akt.slice(wert_akt.indexOf("=")+1,wert_akt.length);
                                    return wert_akt();

                                  }

                                  function ClearCookie(name, wert) {

                                  <!-- Cookie löschen -->
                                    document.cookie = name + "=" + wert +"; expires=Thu, 01-Jan-1970 00:00:01 GMT";

                                  }

                                  function PopUp() {

                                  Check = confirm("Nutzungsbedingungen für die Fotos/Bilder durchgelesen & akzeptiert? > http://impressum.scluzern.com <");
                                    return Check;

                                  }

                                  function CheckCookie() {

                                  SetDefault();

                                  if (navigator.cookieEnabled == true) {
                                  <!--Cookies erlaubt zu speichern-->

                                  var wert_akt = "";   // Feld leer lassen
                                    if (document.cookie)
                                    {
                                      GetCookie(wert_akt);
                                      if (wert_akt == wert) {
                                        alert(wert_akt);
                                        alert(wert);
                                        SetCookie(name, wert, days, hours, minutes);

                                  } else if {

                                  if (Check == false)
                                        {
                                          ClearCookie(name, wert);
                                          if (Check == false)
                                            history.back();
                                        }
                                        else if (Check == true)
                                        {
                                          SetCookie(name, wert, days, hours, minutes);
                                        }
                                      }

                                  } else {
                                      PopUp();
                                      if (Check == false)
                                      {
                                        ClearCookie(name, wert);
                                        if (Check == false)
                                          history.back();
                                      }
                                      else if (Check == true)
                                      {
                                        SetCookie(name, wert, days, hours, minutes);
                                      }
                                    }

                                  } else if (navigator.cookieEnabled == false) {
                                  <!--Cookies verboten zu speichern-->

                                  ClearCookie(name, wert);
                                   if (Check == false)
                                     history.back();

                                  } else {
                                  <!--Cookies Status - Verrate ich nicht-->

                                  ClearCookie(name, wert);
                                   if (Check == false)
                                     history.back();

                                  }
                                  }
                                  </script>

                                  1. hi,

                                    Ich bin in der Firma

                                    Also arbeitest du daran beruflich?

                                    Hier noch meinen ganzen Code, welcher nicht funktioniert (vieleicht siehts du sicher noch grobe Fehler)

                                    Fehlker und fragwürdige Stellen wurden dir von Struppi bereits aufgezeigt - was zum Geier soll das also bitte, dass du den ganzen Krempel jetzt hier offenbar unverändert noch mal ablädst?

                                    Viel Bereitschaft, selbst etwas zu verbessern, scheinst du nicht mitzubringen. So lange das so bleibt, ziehe ich mich aus dem Thema zurück.

                                    gruß,
                                    wahsaga

                                    --
                                    /voodoo.css:
                                    #GeorgeWBush { position:absolute; bottom:-6ft; }
                                    1. Nein ich arbeite in der Firma für mein privates Script. Habe mom keine Arbeit ;)
                                      Ich wollte nur wissen, wie denn das mit den verschiedenen Funktionen funktionert. Ob ich dies wennschon richtig oder falsch gemacht habe..
                                      Kenn ihr Eclipse? Kann ich mit diesem auch Javascript interpretieren? Was für alternativen gibt es?
                                      Natürlich will ich eigeninitiative bringen, jedoch brauche ich grundlegende unterstützung, weil ich kein programm dazu habe (nur den editor) wo mir hilfe leistet mit richtig oder falsch.
                                      demfall schönen tach noch

                                      1. Ich wollte nur wissen, wie denn das mit den verschiedenen Funktionen funktionert. Ob ich dies wennschon richtig oder falsch gemacht habe..

                                        Da sind viele Fehler drin.
                                        Übrigens der IE zeigt den genauen Wortlaut der Fehlermeldung an, wenn du auf das Ausfrufezeichen klickst (wie gesagt, nicht immer hilfreich)

                                        Kenn ihr Eclipse? Kann ich mit diesem auch Javascript interpretieren? Was für alternativen gibt es?

                                        nein.
                                        Die bekanntesten Alternativen sind Firefox, Opera,

                                        Natürlich will ich eigeninitiative bringen, jedoch brauche ich grundlegende unterstützung, weil ich kein programm dazu habe (nur den editor) wo mir hilfe leistet mit richtig oder falsch.

                                        Wie gesagt, so Skripte findest du wie Sand am Meer im Internet. Dein Ansatz ist an mehreren Stellen falsch. Einmal solltest du dich mit lokalen und globalen Variabeln auseinandersetzen, dann mit den Stringfunktionen (für deinen Problem ist split() eine sehr gute Wahl)

                                        Struppi.

                                        --
                                        Javascript ist toll (Perl auch!)
                                        1. Ich habe ein Script gefunden und etwas abgeändert. Jedoch wollte ich etwas lernen, aber dies ging jetzt nicht!
                                          Vielen Dank für eure Hilfe!
                                          mfg shadowhunter