Avatar billede tybz Nybegynder
19. september 2002 - 09:08 Der er 10 kommentarer og
1 løsning

Sæt og læs cookie

Jeg skal lave et funktion i javascript, der sætter en cookie, hvis der på clienten ikke i forvejen er sat en cookie.
Cookien skal sættes til at udløbe efter 7 dage.

Nogen som kan hjælpe mig med det ?
Avatar billede puppetmaster Nybegynder
19. september 2002 - 09:10 #1
Her er lidt at lege med

<SCRIPT language="JavaScript1.2">
<!-- Hide from older browsers

// Original JavaScript code by Duncan Crombie: dcrombie at chirp.com.au
// Please acknowledge use of this code by including this header.

  function getCookie(name) { // use: getCookie("name");
    var re = new RegExp(name + "=([^;]+)");
    var value = re.exec(document.cookie);
    return (value != null) ? unescape(value[1]) : null;
  }

  var today = new Date();
  var expiry = new Date(today.getTime() + 28 * 24 * 60 * 60 * 1000); // plus 28 days

  function setCookie(name, value) { // use: setCookie("name", value);
    document.cookie=name + "=" + escape(value) + "; expires=" + expiry.toGMTString();
  }

// Stop hiding -->
</SCRIPT>
Avatar billede nikolajdu Nybegynder
19. september 2002 - 09:55 #2
Sådan her :

<html>
  <head>

    <script language="javascript">
      <!--
   

    function saet (name, value) {
      var argv = saet.arguments;
      var argc = saet.arguments.length;
      var dato = new Date();
      var expires = new Date(dato.getTime() + 24 * 60 * 60 * 1000 * 7);
      var path = (argc > 3) ? argv[3] : null;
      var domain = (argc > 4) ? argv[4] : null;
      var secure = (argc > 5) ? argv[5] : false;
      document.cookie = name + "=" + escape (value) +
        ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
        ((path == null) ? "" : ("; path=" + path)) +
        ((domain == null) ? "" : ("; domain=" + domain)) +
        ((secure == true) ? "; secure" : "");
    }


function hentKage2 (name) {
var cook = document.cookie;
var cookNavn = name + "=";
var laengde = cook.length;

var start = 0;
while (start < laengde) {
var slut = start + cookNavn.length;
if (cook.substring(start, slut) == cookNavn) {
var vend = cook.indexOf (";", slut);
if (vend == -1) vend = laengde;

return unescape(cook.substring(slut, vend));
}

start = cook.indexOf(" ", start) + 1;
if (start== 0) break;
}
return null;
}


      function init(){
if(document.cookie){
tjeck = hentKage2('kagemand')
if(tjeck==null){
saet('kagemand','hej fra Nikolaj')
tjeck = hentKage2('kagemand')
        }
    }alert(tjeck)
}
      -->
      </script>
  </head>

  <body onload="init()" class="myBody">
 
<a href="#" onClick="saet('kagemand','hej fra Nikolaj')">S&aelig;t svinet</a> (bliver dog sat automatisk - mest for at vise hvordan)
  <br>
<a href="#" onClick="alert(hentKage2('kagemand'))">Hent dyret</a>
  </body>
</html>

Her sættes en cookie med navnet "kagemand".

/Nikolaj
Avatar billede nikolajdu Nybegynder
19. september 2002 - 10:07 #3
Har indsat nogle forskellige alerts - Dem fjerner du bare igen. Mest for at vise dig hvordan det fungerer. Desuden kom der lige en slette funktion med. Den fungerer ved at du kalder funktionen saet('kagen_navn','die'); - Skal du bruge værdien "die" - Så må du selv opfinde noget andet :)

/Nikolaj

<html>
  <head>

    <script language="javascript">
      <!--
   

    function saet (name, value) {
      var argv = saet.arguments;
      var argc = saet.arguments.length;
      var dato = new Date();
      if(value!="die"){
      var expires = new Date(dato.getTime() + 24 * 60 * 60 * 1000 * 7);
      }else{
      var expires = new Date(dato.getTime());
      }
      var path = (argc > 3) ? argv[3] : null;
      var domain = (argc > 4) ? argv[4] : null;
      var secure = (argc > 5) ? argv[5] : false;
      document.cookie = name + "=" + escape (value) +
        ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
        ((path == null) ? "" : ("; path=" + path)) +
        ((domain == null) ? "" : ("; domain=" + domain)) +
        ((secure == true) ? "; secure" : "");
    }


function hentKage2 (name) {
var cook = document.cookie;
var cookNavn = name + "=";
var laengde = cook.length;

var start = 0;
while (start < laengde) {
var slut = start + cookNavn.length;
if (cook.substring(start, slut) == cookNavn) {
var vend = cook.indexOf (";", slut);
if (vend == -1) vend = laengde;

return unescape(cook.substring(slut, vend));
}

start = cook.indexOf(" ", start) + 1;
if (start== 0) break;
}
return null;
}


      function init(){
if(document.cookie){
tjeck = hentKage2('kagemand')
if(tjeck==null){
alert("ingen cookie med navnet kagemand s&aring; vi bager en!");
saet('kagemand','hej fra Nikolaj')
tjeck = hentKage2('kagemand')
        }
    }else{
    alert ("ingen arme og der er ej heller kager!")
    saet('kagemand','hej fra Nikolaj')
tjeck = hentKage2('kagemand')
    }alert(tjeck)
}
      -->
      </script>
  </head>

  <body onload="init()" class="myBody">
 
<a href="#" onClick="saet('kagemand','hej fra Nikolaj')">S&aelig;t svinet</a> (bliver dog sat automatisk - mest for at vise hvordan)
  <br>
<a href="#" onClick="alert(hentKage2('kagemand'))">Hent dyret</a>
  <br>
<a href="#" onClick="saet('kagemand','die')">Dr&aelig;b dyret</a>
  </body>
</html>
Avatar billede tybz Nybegynder
19. september 2002 - 10:07 #4
nikolajdu: det ser fornuftig ud.
Jeg tjekker det lige igennem og så kommer jeg tilbage med point hvis det virker.
Avatar billede nikolajdu Nybegynder
19. september 2002 - 12:49 #5
Fik du det til at virke :)

Tak for point :)
Avatar billede tybz Nybegynder
19. september 2002 - 13:10 #6
Fik ikke tid til at se mere på det, da der lige kom en stak opgaver.
Men jeg ser på det i morgen.
Synes ikke du skulle vente så længe på point da du har lavet så meget for det :)

Lidt trals at man blev tvunget til at lave det client side da jeg er vandt til server side. Men siden køre med cache og derfor dutter serverside ikke her.
Avatar billede nikolajdu Nybegynder
19. september 2002 - 13:28 #7
Jeg havde allerede lavet en version og havde den liggende, så det var mest at tilpasse den dit behov. Anyway har jeg godt af at læse op på cookies af og til :))

Du må sige til hvis der er problemer :)

/Nikolaj
Avatar billede tybz Nybegynder
20. september 2002 - 09:32 #8
Hej Nikolaj.
Der er et eller andet galt.
Gider du lige kigger på det her kode:

<html>
  <head>

    <script language="javascript">
      <!--
   

function saet (name, value) {
  var argv = saet.arguments;
  var argc = saet.arguments.length;
  var dato = new Date();
  var expires = new Date(dato.getTime() + 24 * 60 * 60 * 1000 * 7);
  var path = (argc > 3) ? argv[3] : null;
  var domain = (argc > 4) ? argv[4] : null;
  var secure = (argc > 5) ? argv[5] : false;
  document.cookie = name + "=" + escape (value) +
    ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
    ((path == null) ? "" : ("; path=" + path)) +
    ((domain == null) ? "" : ("; domain=" + domain)) +
    ((secure == true) ? "; secure" : "");
}


function hentKage2 (name) {
var cook = document.cookie;
var cookNavn = name + "=";
var laengde = cook.length;

var start = 0;
while (start < laengde) {
var slut = start + cookNavn.length;
if (cook.substring(start, slut) == cookNavn) {
var vend = cook.indexOf (";", slut);
if (vend == -1) vend = laengde;

return unescape(cook.substring(slut, vend));
}

start = cook.indexOf(" ", start) + 1;
if (start== 0) break;
}
return null;
}

function init(){
if(document.cookie){
    tjeck = hentKage2('TMfront')
if(tjeck==null){
    saet('TMfront','1');
    tjeck = hentKage2('TMfront');
    MM_openBrWindow('popup.html','','scrollbars=no',220,130);
    }
    }
}
-->
</script>
</head>

<body onload="java script:init();">


</body>
</html>

Der sker ikke rigtig noget.
Jeg modtager ingen cookie
Avatar billede tybz Nybegynder
20. september 2002 - 09:40 #9
MM_openBrWindow funktionen er naturligvis også på siden.
Avatar billede tybz Nybegynder
20. september 2002 - 10:43 #10
Fandt selv en anden løsning :)
Avatar billede nikolajdu Nybegynder
20. september 2002 - 14:36 #11
oki doki. MM__open er en dreamweaver funktion - Stol ikke alt for meget på dem :)
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