Cookieproblem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Cookieproblem

    Hallo,
    einfach gesagt: mittels Klicken eines Links soll ein Cookie gesetzt werden, wenn es nicht schon vorhanden ist, mit dem Namen und Inhalt der mit dem Link übergeben wird.

    Problem: Wenn noch kein Cookie vorhanden ist klappt es. Wenn eines vorhanden ist und die Parameter im Link (name, inhalt) geändert werden, dann setzt er zwar das Cookie, aber die anschließende Kontrolle nach dem Aktualisieren der Seite schlägt fehl ("Cookie nicht gesetzt" wird ausgegeben).

    Zum testen einfach erstmal ausführen und anschließen aktualisieren, dann Link z.B. in <a href="#" onClick="setzeCookie('testcookie2','blabla');">test</a> ändern und wieder aktualisieren.

    Quelltext:
    PHP-Code:
    <html>
    <
    head>
    <
    script language="javascript" type="text/javascript">
    function 
    pruefeCookie(name) {
        
    alleCookies=document.cookie;
    // Alle Cookies mittels Separator ";" in Array-Feld legen
        
    cookieArr=alleCookies.split(";");
    // für jedes Feld...
        
    for (var i=0;i<cookieArr.length;i++) {
    // ... überprüfen, ob vor dem "=" der name mit dem übergebenen Namen überein stimmt
    // wenn ja, dann true zurückgeben und Textausgabe
            
    if (cookieArr[i].split("=")[0] == name) {
                
    document.write("Cookie vorhanden");
                return 
    true;
            }
        }
    // wenn nein, dann false zurückgeben
        
    return false;
    }

    function 
    setzeCookie (nameinhalt) {
        if (
    pruefeCookie(name) == false) {
    // wenn false zurück gegeben wurde, dann Cookie setzen
            
    document.write("Cookie NICHT vorhanden");
            var 
    jetzt = new Date();
            var 
    datum = new Date(jetzt.getTime() + 1000*60*60*24*365);        
            
    document.cookie name "=" inhalt "; expires=" datum.toGMTString() + "; path=/";
        }
    }
    </
    script>
    </
    head>
    <
    body>
    <
    a href="#" onClick="setzeCookie('testcookie','inhalt eben3');">test</a>
    </
    body>
    </
    html
    Zuletzt geändert von miguel_rkc; 16.03.2005, 13:39.

  • #2
    Re: Cookieproblem

    wenn ich mir mal mit dem IE 5 dein beispiel ansehe, und dann mit alert(document.cookie) alle cookies anzeigen lasse, sieht das so aus, als ob die cookies nicht durch ein semikolon, sondern durch semikolon gefolgt von einem blank getrennt sind.

    wenn du jetzt also am semikolon splittest, erhältst du für alle cookies außer dem ersten nicht "name=...", sondern " name=..."
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Oh, du hast absolut recht.. danke für den Hinweis, ich werde mich dann mal ran machen das du fixen. Thx!

      Kommentar


      • #4
        ich würde zuerst mal prüfen, ob das alle browser so machen (hab derzeit nur den IE 5 zum testen).

        wenn ja, kannst du ja einfach "; " zum splitten benutzen, statt ";"
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Haha jo, ich hab mir jetzt ne Funktion geschrieben, die mir das führende Leerzeichen wegmacht, aber mit split("; ") gehts auch

          danke nochmal

          Kommentar


          • #6
            geilo, neues problem:

            zum löschen des cookies verwende ich folg. funktion, die das ablaufdatum des genannten cookies in die vergangenheit setzt:

            PHP-Code:
            function loescheCookie (name) {
                var 
            datum "Thu, 01-Jan-70 00:00:01 GMT"
                var 
            inhalt "";
                
            document.cookie name "=" inhalt "; expires=" datum "; path=/";
                
            alert('Cookie: '+name+' gelöscht!');

            Im Firefox 1.01 funktioniert es ohne Probleme, IE 6 erstellt stattdessen tatsächlich ein Cookie mit dem Namen und (ohne) Wert. Sowieso kann ich im Cookieinhalt nirgendwo das expires erkennen...

            licht
            aus
            localhost/
            1088
            2865846400
            29772225
            839585200
            29698800
            *

            Weiss jemand Rat, wie ich das Cookie im IE korrekt lösche?

            Kommentar


            • #7
              [JavaScript] Cookieproblem²

              Guten Tag,
              sorry, dass ich abermals mit einem Cookieproblem ankomme, jedoch konnte ich weder mit Google, noch mit der Suchfunktion eine Lösung für mein Problem finden.
              Also: ich möchte ein Cookie, dass ich im Vornherein korrekt gesetzt habe wieder löschen! Ist simpel, weiss ich, allerdings funktioniert folg. wiedermal nicht im IE (im FF ohne Probleme).

              PHP-Code:
              function loescheCookie (name) {
                  var 
              datum "Thu, 01-Jan-70 00:00:01 GMT"
                  var 
              inhalt "";
                  
              document.cookie name "=" inhalt "; expires=" datum "; path=/";

              Das Cookie, dessen Name via 'name' richtig übergeben wird sollte eigentlich aufgrund des in der Vergangenheit liegenden Datums gelöscht werden, stattdessen setzt der IE ein Cookie mit leerem Wert ('inhalt') und komischen Zahlen:

              PHP-Code:
              hilfe

              localhost
              /
              1088
              667801216
              34459479
              4046449712
              29699778

              Weiss jemand Rat?

              Kommentar


              • #8
                Re: [JavaScript] Cookieproblem²

                so ganz easy scheint es nicht zu sein, mit javascript im IE cookies zu handeln.

                aber vielleicht kann http://www.onetwomax.de/magazin/8613...JavaScript.htm weitere hinweise geben.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Ok, also das Script hinter deinem Link funktioniert im IE, nicht aber im FF. Allerdings habe ich mir das jetzt so zurecht gebogen, dass es in beiden Browsern funktioniert.

                  Falls es jemanden interessiert:

                  PHP-Code:
                  function pruefeCookie(nameinhalt) {
                      
                  alleCookies document.cookie;
                      
                  cookieArr alleCookies.split("; ");
                      for (var 
                  i=0i<cookieArr.lengthi++) {
                          if (
                  cookieArr[i].split("=")[0] == name) {
                              if (
                  inhalt != 'wechsel') {
                                  return 
                  true;
                              } else {
                                  
                  inhalt cookieArr[i].split("=");
                                  
                  inhalt unescape(inhalt[1]);
                                  return 
                  inhalt;
                              }            
                          }
                      }
                      return 
                  false;
                  }

                  function 
                  loescheCookie (name) {
                      var 
                  value "";
                      var 
                  hours 0;
                      var 
                  expire "";
                      if(
                  hours != null) {
                          
                  expire = new Date((new Date()).getTime() + hours 3600000);
                          
                  expire "; expires=" expire.toGMTString();
                      }
                      
                  document.cookie name "=" escape(value) + expire;
                  }

                  function 
                  setzeCookie (nameinhalt) {
                      if (
                  inhalt == 'wechsel') {
                          
                  inhalt pruefeCookie(nameinhalt); 
                          if (
                  inhalt == 'an') {
                              
                  loescheCookie(name);
                              
                  setzeCookie(name'aus');
                              
                  window.location.reload();
                          } else {
                              
                  loescheCookie(name);
                              
                  setzeCookie(name,'an');
                              
                  window.location.reload();
                          }
                      }
                      if (
                  pruefeCookie(nameinhalt) == false) {
                          var 
                  jetzt = new Date();
                          var 
                  datum = new Date(jetzt.getTime() + 1000*60*60*24*365);        
                          
                  document.cookie name "=" inhalt "; expires=" datum.toGMTString() + ";";
                      }

                  Das Script setzt ein Cookie, das erstmal ein Cookie (falls noch nicht vorhanden) mit einem Standardwert setzt und es dann den Inhalt dessen via Buttondruck ändert (hier: aus - an). Zugegebenermaßen ist der Code teilweise doppelt gemoppelt, allerdings schien mir die Browserkompatibilität anders nicht möglich. Ich habe es verwendet, um eine dynamische Hilfe ein- oder auszuschalten (mittels Tootipbibliothek von http://www.walterzorn.de/tooltip/tooltip.htm) Demo gibts hier: http://www.temp.passadeena.de/cookie/
                  Zuletzt geändert von miguel_rkc; 22.03.2005, 13:22.

                  Kommentar

                  Lädt...
                  X