Avatar billede ripley Nybegynder
24. februar 2004 - 13:33 Der er 11 kommentarer og
1 løsning

Jeg bliver SKØR - cookie-check virker ikke på IE

Hej!

Jeg har postet et spørgsmål om, hvordan man kunne checke om cookies var slået til eller ej - men da jeg så fik det prøvet af strittede IE 6.0 totalt imod.
Den påstår, at cookies er slået til - uanset, om de er slået fra eller til. NN virker fint.

Jeg har prøvet alle mulige former for javascript-kode, her er den seneste:

<html>
<head>
    <title>Untitled</title>
<script language="JavaScript">
<!--
function cc()
{
/* check for a cookie */
  if (document.cookie == "")
  {
    /* if a cookie is not found - alert user -
    change cookieexists field value to false */
    alert("COOKIES need to be enabled!");

    /* If the user has Cookies disabled an alert will let him know
        that cookies need to be enabled to log on.*/

    document.Form1.cookieexists.value ="false" 
  } else {
  /* this sets the value to true and nothing else will happen,
      the user will be able to log on*/
    document.Form1.cookieexists.value ="true"
    alert("Cookies are enabled");
  }
}

/* Set a cookie to be sure that one exists.
  Note that this is outside the function*/
document.cookie = 'killme' + escape('nothing');
// -->
</script>
</head>

<body onload="cc();">

<FORM name="Form1">
<input type="hidden" name="cookieexists" value="false">
</FORM>

</body>
</html>

... hvad dælen er det med IE 6.0?
Hvorfor kan man ikke lave et simpelt cookie-check på den?
Avatar billede pelkjaer Nybegynder
24. februar 2004 - 15:47 #1
Jeg ville gøre således:
http://peterelkjaer.dk/exp/checkCookies.html

Først sætter vi en cookie (onload).
Derefter læser vi den.

For at tjekke om cookies er slået til, så tjekker vi om den cookie vi netop har sat er tom. Er den det, er cookies slået fra. Er den ikke, er cookies slået til.
Avatar billede ripley Nybegynder
25. februar 2004 - 14:01 #2
Umiddelbart virker det ok - men tror du ikke, cookien skal slettes lige efter, så den ikke ligger der til næste gang?
Ellers kan den jo registrere forkert, eller??
Hvordan sletter man cookien?
Avatar billede pelkjaer Nybegynder
25. februar 2004 - 14:09 #3
Som den er skrevet nu, lever cookien i 1 dag.
Men du kan slette den ved at ændre datoen til en tidligere dato.

fx:

var t=new Date(); // today
var y=new Date(t.getTime()-1000*60*60*24);
Avatar billede pelkjaer Nybegynder
25. februar 2004 - 14:09 #4
hov manglede lige en kommentar:
var t=new Date(); // today
var y=new Date(t.getTime()-1000*60*60*24); // yesterday
Avatar billede pelkjaer Nybegynder
25. februar 2004 - 14:29 #5
check http://peterelkjaer.dk/exp/checkCookies.html
Har tilføjet en "slet cookie".
Avatar billede ripley Nybegynder
25. februar 2004 - 14:42 #6
HUUUUUULLLLKKK - den virker ikke!
Har prøvet dit eget link - jeg har lige slået cookies til og nu kommer en alert op: "cookies er slået fra".
Hvordan dælen kan det være, at jeg ikke kan få noget til at virke???
Avatar billede pelkjaer Nybegynder
25. februar 2004 - 14:46 #7
Klik "sæt cookie" først. Jeg sætter jo ikke en cookie mere på onload'en :)
Avatar billede pelkjaer Nybegynder
25. februar 2004 - 14:47 #8
Hvis du så sletter cookien, vil du få beskeden "cookies er slået fra", fordi cookien ikke findes mere jo...
Avatar billede ripley Nybegynder
25. februar 2004 - 15:09 #9
Nu har jeg prøvet sådan her få cookie-checket på onload-eventen.
Ser det ikke OK ud?
Det virker stadig ikke ..

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Check for cookies</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">

function setCookie(n,v,d) {
  var t=new Date(),e=new Date();if(d==null||d==0){
  d=1;}e.setTime(t.getTime()+3600000*24*d);
  document.cookie=n+"="+escape(v)+ ";expires="+e.toGMTString();
}

function readCookie(n) {
  var c=""+document.cookie,ia=c.indexOf(n);
  if(ia==-1||n==""){return "";}var ib=c.indexOf(';',ia);
  if(ib==-1){ib=c.length;}return unescape(c.substring(ia+n.length+1,ib));
}

function deleteCookie(n,v) {
  var t=new Date(),y=new Date();
  y.setTime(t.getTime()-1000*60*60*24);
  document.cookie=n+"="+escape(v)+ ";expires="+y.toGMTString();
}

function checkForCookies() {
  setCookie('kagen','Dette er kagens indhold','1');
  if(readCookie('kagen')==""){alert('Cookies er slået fra');}
  else{alert('Cookies er slået til');}
  deleteCookie('kagen',null);
}
</script>
</head>
<body onLoad="checkForCookies()";>
</body>
</html>
Avatar billede pelkjaer Nybegynder
25. februar 2004 - 15:54 #10
Hvad er det der ikke virker. Virker fint her - der meddeler den at "cookie er slået til", hvilket giver sig selv, i og med, at du sætter en cookie.
Avatar billede ripley Nybegynder
27. februar 2004 - 10:07 #11
Hm - du får points.
Nu kan vi vist ikke tærske langhalm på det spørgsmål mere.
Desuden tror jeg, at jeg får problemet, fordi jeg tester lokalt - det virker som om der lægges en cookie på min maskine, uanset om det er slået fra eller ej - men da jeg prøvede siden udefra, virkede det godt nok.
Avatar billede pelkjaer Nybegynder
27. februar 2004 - 10:13 #12
okay :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester