Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Hoe kan ik een cookie apart wegschrijven

rjpm
4 antwoorden
  • Hallo allemaal,

    Het volgende probleem krijg ik maar niet opgelost. Ik heb eerder een vraag gesteld op dit forum over het opslaan van style sheets in een cookie. Dit is uiteindelijk gelukt. Ik heb nu echter een script toegevoegd dat kijkt of een cookie aanwezig is. Is dat het geval dan wordt doorverwezen naar de tweede pagina (waarop geen Nedstat teller te zien is). Deze cookie is slechts 1 uur geldig. De cookie van de style sheets moet onbeperkt geldig zijn.

    Het volgende probleem doet zich nu voor. Het redirect script slaat de gegevens op in de eerste cookie, waardoor deze alsnog blijft staan na een uur. Weet iemand hoe ik ervoor kan zorgen dat het redirect script een eigen aparte sessie cookie schrijft?

    Alvast bedankt.
    Groeten,
    rjpm

    (Dit script heb ik niet zelf geschreven, maar alleen aangepast)

    // page to go to if cookie exists
    go_to = "http://www.chamalaun.demon.nl/default.htm";

    // number of days cookie lives for
    num_days = 1;
    function ged(noDays){
    var today = new Date();
    var expr = new Date(today.getTime() + noDays*60*60*1000);
    return expr.toGMTString();
    }

    function readCookie(cookieName){
    var start = document.cookie.indexOf(cookieName);
    if (start == -1){
    document.cookie = "seenit=yes; expires=" + ged(num_days);
    } else {
    window.location = go_to;
    }
    }

    readCookie("seenit");
  • [quote:cabd79adf8="rjpm"]Weet iemand hoe ik ervoor kan zorgen dat het redirect script een eigen aparte sessie cookie schrijft?[/quote:cabd79adf8]
    Waarom schrijf je niet 1 cookie weg met de gekozen stylesheet en de tijd. Voor de redirect controleer je dan niet (alleen) op het bestaan van het cookie maar op de tijd die erin staat.
  • Goede tip Annie. Ik heb het geprobeerd, maar ik begrijp niet helemaal hoe ik de scripts goed kan combineren. Het script om de style sheet op te slaan, kijkt alleen welke stylesheet gekozen is, zodat op elke pagina dezelfde lettergrootte te zien is. Hoe kan ik er nu voor zorgen dat het redirect script kijkt naar de tijd?

    Voor de zekerheid het deel van het style sheet script dat de cookie leest.

    [code:1:bb7bdf02d1]
    function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
    }

    window.onload = function(e) {
    var cookie = readCookie("style");
    var title = cookie ? cookie : getPreferredStyleSheet();
    setActiveStyleSheet(title);
    }

    window.onunload = function(e) {
    var title = getActiveStyleSheet();
    createCookie("style", title, 365);
    }

    var cookie = readCookie("style");
    var title = cookie ? cookie : getPreferredStyleSheet();
    setActiveStyleSheet(title);[/code:1:bb7bdf02d1]

    Ik hoop dat je me iets verder kunt helpen. Ik ben niet echt ervaren in javascript.
  • Ik heb even geprobeerd een testscriptje voor je in elkaar te draaien. In de textarea wordt de inhoud van het huidige cookie getoond (telkens na herladen van de pagina). Met "set prefstyle" kan je de (testwaarde voor de) stylesheet opslaan waarbij de redirection tijd op de huidige tijd wordt gezet. Met "set redirtime" kan je de tijd in het cookie op een andere testwaarde zetten om de termijn van 1 uur te testen.

    Een en ander lijkt te werken (maar om eerlijk te zijn zie ik het niet meer zo scherp op dit tijdstip ;)) dus ik vermoed dat je hier wel mee verder kunt. Succes, ik ga nu pitten.

    [code:1:826f28e46b]
    <html>
    <head>
    <script type="text/javascript" src="cookie.js"></script>
    <script type="text/javascript">
    window.onload = function() {
    // inhoud van cookie ophalen
    var aKoekjesTrommel = getCookieValues();
    // verschil met redir tijd uit cookie bepalen
    // en eventueel redirecten
    var timeCookie = new Date();
    timeCookie.setTime(Date.parse(aKoekjesTrommel["redirtime"]));
    var timeNow = new Date();
    var timeDiff = (timeNow - timeCookie); // verschil in milliseconden
    timeDiff = timeDiff / (1000*60*60); // verschil in uren
    if (timeDiff >= 1)
    {
    // redir
    alert("== R E D I R ==");
    }

    // inhoud van cookie tonen in textarea
    var t = document.getElementById("trommel");
    t.value = "";
    for (var s in aKoekjesTrommel)
    {
    t.value += s + " = " + aKoekjesTrommel[s] + "
    ";
    }
    }

    // testfuncties
    function setPrefstyle(f) {
    var aCookieValues = new Array();
    var dDate = new Date();
    aCookieValues["redirtime"] = dDate.toGMTString();
    aCookieValues["prefstyle"] = document.getElementById("prefstyle").value;
    setCookieValues(aCookieValues);
    }
    function setRedirtime(f) {
    var aCookieValues = new Array();
    var dDate = new Date();
    aCookieValues["redirtime"] = document.getElementById("redirtime").value;
    aCookieValues["prefstyle"] = document.getElementById("prefstyle").value;
    setCookieValues(aCookieValues);
    }
    </script>
    <style type="text/css">
    .t, textarea { width: 500px; }
    textarea { height: 300px; }
    </style>
    </head>
    <body>
    <form>
    <textarea id="trommel"></textarea><br />
    <input type="text" class="t" id="prefstyle" value="bla" /><input type="button" value="set prefstyle" onclick="setPrefstyle()" /><br />
    <input type="text" class="t" id="redirtime" value="Thu, 12 Feb 2004 23:55:52 UTC" /><input type="button" value="set redirtime" onclick="setRedirtime()" /><br />
    </form>
    </body>
    </html>[/code:1:826f28e46b]

    En natuurlijk de inhoud van cookie.js
    [code:1:826f28e46b]
    function getCookieValues()
    {
    if (document.cookie)
    {
    var aCookieList = document.cookie.split("; ");
    // array voor elk koekje in de lijst
    var aCookies = new Array();
    for (var i=0; i < aCookieList.length; i++)
    {
    // naam-waarde paren uit elkaar halen
    var aNameValue = aCookieList[i].split("=");
    // unescapen en aan de koekje array toevoegen
    aCookies[aNameValue[0]] = unescape(aNameValue[1]);
    }
    // array van koekjes teruggeven
    return aCookies;
    }
    else
    {
    return false;
    }
    }

    function setCookieValues(aNameValuePairs)
    {
    // deze functie plaatst het koekje incl. tht-datum
    var sCookie = "";
    // zet de datum op x dagen vanaf nu (standaard = 1 jaar)
    var dDate = new Date();
    var iOffset = (arguments[1] ? arguments[1] : 365);
    dDate.setDate(dDate.getDate() + iOffset);
    // schrijf het koekje
    for (var s in aNameValuePairs)
    {
    sCookie += s + "=" + escape(aNameValuePairs[s]) + "; ";
    }
    sCookie += "expires=" + dDate.toGMTString() + "; ";
    document.cookie = sCookie;
    }
    [/code:1:826f28e46b]

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.