Ga naar inhoud

Hoe kan ik een cookie apart wegschrijven


anoniem

Aanbevolen berichten

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");
Link naar reactie
[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.
Link naar reactie
  • 3 weken later...
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.
Link naar reactie
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] + "\n"; } } // 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]
Link naar reactie
  • 3 weken later...

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...