Vraag & Antwoord

Webprogrammeren & scripting

Hoe kan ik een cookie apart wegschrijven

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] + "\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]

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

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