• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[GELÖST] Problem mit dem Auslsen von Cookies

jeffglennfox

New member
Hallo,

nachdem ich jetzt wirklich mehr als zwei Stunden probiert habe muss ich mich mal an das Forum mit einer Frage wenden:

Ich setzte einen Cookie mit dieser Funktion:

Code:
function setCookie(cname, cvalue, duration, unit) {

    var d = new Date();

    switch (unit) { case 'days':

    d.setTime(d.getTime() + (duration*24*60*60*1000));

    break; case 'hours':

    d.setTime(d.getTime() + (duration*60*60*1000));

    break; case 'minutes':

    d.setTime(d.getTime() + (duration*60*1000));

    break;}

    var expires = "expires="+ d.toUTCString();

    document.cookie = cname + "=" + cvalue + ";" + expires + ", HttpOnly; path=/";

}

und möchte ihn mit dieser auslesen:

HTML:
function getCookieValue(name) {
   var b = document.cookie.match('(^|;)\\s*' + name + '\\s*=\\s*([^;]+)');
   return b ? b.pop() : '';
   
}

Das Protokoll ist http:// und keine weiteren Besonderheiten. Leider liefern mit nur der IE11 einen Wert. Beim Edge, Chrome und Opera : Fehlanzeige.

P.S. Die Seite war zum Testen per htacces passortgeschützt, eine Deaktivierung hatte an dem Verhalten aber auch nichts geändert.

Über einen Lösungsansatz würde ich mich sehr freuen.

Gruss von Markus
 
Zuletzt bearbeitet von einem Moderator:
Hast du da mal Kontrollausgaben in der getCookieValue() um das regex drum rum gebaut?
Und hast du nicht irgend eine Lib wie z. B. jQuery am Start? Damit ist das viel einfacher und sicherer zu machen. Siehe z. B. jQuery cookie plugin

Tipp: Online regex Tester

Und wie hast du es geschafft, hier auf den Tag genau 11 Jahre nach deiner Registrierung zu posten? :very_drunk: :applause:
 
Hallo,

danke für Deine Antwort. Schon 11 Jahre im Forum. Oha, wie die Zeit vergeht.- Aber das mit dem Zeitpunkt meines Post war purer Zufall.

Das Problem mit dem Cookie schein andere Ursachen zu haben. ich habe es gerade mal so probiert:

Code:
function getCookieValue(cname) {

  var name = cname + "=";
  var decodedCookie = decodeURIComponent(document.cookie);
  var ca = decodedCookie.split(';');
  for(var i = 0; i <ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) == 0) {
      return c.substring(name.length, c.length); 
    }
  }
  return "";
}

und beim Auslesen auch noch etwas verändert:

Code:
function setCookie(cname, cvalue, duration, unit) {

    var d = new Date();

    switch (unit) { case 'days':

    maxAge = duration*24*60*60;

    break; case 'hours':

    maxAge = duration*60*60;

    break; case 'minutes':

    maxAge = Duration*60;

    break;}

    var maxAge = "maxAge="+ maxAge; 

    document.cookie = cname + "=" + cvalue + ";" + maxAge + "; path=/";

}

Immer noch das gleiche Problem. Nur der IE11 zeigt den Inhalt des Cookie an.

P.S. JQuery will ich nur ungerne verwenden.

Gruss von Markus
 
Hallo, der Cookie wird beispielsweise mit folgenden Werten gesetzt:

Code:
setCookie('display-news-note', 'open', 24, 'hours');

In PHP kann ich den Cookie auch problemlos auslesen. Nur nicht in Javascript offenbar mit gängigen Browsern (außer den IE11). Ich vermute, dass sich da etwas grundsätzlich geändert haben muss. Bzw. kann jemand das Verhalten reproduzieren ?

Vielen Dank für weitere Hinweise.

Gruss von Markus
 
Das ist keine Antwort auf die Frage. Füge mal diese Zeile ein und zeige was in der Konsole steht.
console.log(document.cookie);
 
Guten morgen,

in der Konsole steht:

Code:
display-news-note=open

Mehr nicht. Müsste da nicht auch etwas zur Gültigkeitsdauer des Cookie erscheinen ?

Gruss von Markus
 
Ja ich hatte auch eine andere Anzeige erwartet. In welchem Browser ist das jetzt und wie sieht es in den anderen aus?

Jetzt würde ich nur zum Vergleich das ganze mit Code machen, der 100 %ig funktioniert, z. B. mit jQuery o. ä.
 
Ja, habe ich mir in nachhinein auch überlegt dass, das Quatsch ist und man die Gültigkeit nicht auslesen kann. Die Scripte liefen noch vor einigen Wochen einwandfrei, daher denke ich dass sich da was bei einigen Briowsern geändert hat..Cookies sind ja auch immer datenschutzrelevant, Und der MS Edge benutzt ja mittlerweile auch die Chrome-Engine. Ich kann aber im Moment nicht weiter testen und recherchieren da ich unterwegs bin. Gruss von Markus.
 
Ich habe es jetzt gelöst. Mit dieser Funktion funktioniert dass Auslesen der Cookies bei allen aktuellen Browsers und auch beim IE 11 so, dass ich nur den Cookie-Wert erhalte:

Code:
function readCookie(name) {
           var i=0; 
           var search = name + "=";
           while (i<document.cookie.length) {
              if (document.cookie.substring(i, i + search.length) == search) {
                 var end = document.cookie.indexOf(";", i + search.length);
                 end = (end > -1) ? end : document.cookie.length;
                 var cookie = document.cookie.substring(i + search.length, end);
                 return unescape(cookie);
              }
              i++;
           }
           return "";
        }

Das Thema kann jetzt endgültig zu.

Gruss von Markus
 
Zuletzt bearbeitet:
Zurück
Oben