# Javascript cookie

**URL:** <http://webforumet.no/t/javascript-cookie/23337>\
**Category:** Webutvikling\
**Tags:** javascriptajax\
**Created:** [mars 20, 2015, 12:21pm UTC](http://webforumet.no/t/javascript-cookie/23337 "2015-03-20T12:21:06Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![kongen](http://webforumet.no/letter_avatar_proxy/v4/letter/k/b487fb/32.png) [@kongen](http://webforumet.no/u/kongen)\
**Post date:** [mars 20, 2015, 12:21pm UTC](http://webforumet.no/t/javascript-cookie/23337/1 "2015-03-20T12:21:06Z")

</div>

I php så setter man en cookie slik

```auto
setcookie('cookie_name', $value, time() + 3600), '/', '.domain.com', true, true);
```

i javascript slik

```auto
document.cookie="value; expires=Thu, 24 Dec 2015 12:00:00 UTC; path=/";
```

Men hvordan setter man de 3 siste tingene i javascript cookien (domene, ssl, httponly)?

---

<div class="post-metadata">

**Author:** ![Camillafr](http://webforumet.no/letter_avatar_proxy/v4/letter/c/85f322/32.png) [@Camillafr](http://webforumet.no/u/Camillafr)\
**Post date:** [mars 20, 2015, 12:44pm UTC](http://webforumet.no/t/javascript-cookie/23337/2 "2015-03-20T12:44:39Z")

</div>

```auto
document.cookie="value; expires=Thu, 24 Dec 2015 12:00:00 UTC;domain=.example.com;path=/;secure"
```

Domene settes sånn: ;[domain=.example.com](http://domain=.example.com);  
Ssl/secure settes sånn: ;secure

HttpOnly får ikke du satt via javascript.  
Utklipp fra Wikipedia:  
The HttpOnly cookie is supported by most modern browsers. On a supported browser, an HttpOnly session cookie will be used only when transmitting HTTP (or HTTPS) requests, thus restricting access from other, non-HTTP APIs (such as JavaScript).

Har ikke testet koden over, men tror det skal fungere sånn.

---

<div class="post-metadata">

**Author:** ![adeneo](http://webforumet.no/letter_avatar_proxy/v4/letter/a/258eb7/32.png) [@adeneo](http://webforumet.no/u/adeneo)\
**Post date:** [mars 20, 2015, 12:56pm UTC](http://webforumet.no/t/javascript-cookie/23337/3 "2015-03-20T12:56:37Z")

</div>

For å begynne med den siste først, du kan ikke sette httponly ettersom det betyr at cookien ikke er tilgjengelig fra javascript, og derfor kan du selvfølgelig heller ikke lage slike cookies i javascript.

Forøvrig er det likt, her er javascript

```auto
document.cookie = "name=value; expires=date; path=path; domain=domain; secure";
```

og PHP

```auto
setcookie ( $name, $value, $expire, $path, $domain, $secure, $httponly )
```

og de er nesten helt like, sett bort i fra at javascript ikke har httponly. Med andre ord blir denne i PHP

```auto
setcookie('cookie_name', $value, time() + 3600), '/', '.domain.com', true, true);
```

omtrent dette i javascript

[code=php]  
var time = new Date();  
var value = “ting å lagre i cookie”;  
time.setTime( time.getTime() + (3600 \* 1000) ); // millisekunder

document.cookie = “cookie\_name=” + escape(value) +  
“; expires=” + time.toGMTString() +  
“; path=/; [domain=domain.com](http://domain=domain.com); secure”;[/code]

Det første man legger merke til er at det er litt komplisert med cookies i javascript, og derfor finnes det en del greie funksjoner man kan bruke som gjør ting litt mye lettere, for eksempel

[code=php]  
function setCookie(name, value, expires, path, domain, secure) {  
var curCookie = name + “=” + escape(value) +  
((expires) ? “; expires=” + expires.toGMTString() : “”) +  
((path) ? “; path=” + path : “”) +  
((domain) ? “; domain=” + domain : “”) +  
((secure) ? “; secure” : “”);  
document.cookie = curCookie;  
}

function getCookie(name) {  
var dc = document.cookie;  
var prefix = name + “=”;  
var begin = dc.indexOf(“; " + prefix);  
if (begin == -1) {  
begin = dc.indexOf(prefix);  
if (begin != 0) return null;  
} else {  
begin += 2;  
}  
var end = document.cookie.indexOf(”;", begin);  
if (end == -1) end = dc.length;  
return unescape(dc.substring(begin + prefix.length, end));  
}[/code]

Legg også merke til at document.cookie er litt spesiell, det er en property av document, men i motsetning til alle andre properties så overskrives ikke verdien, men i stedet legges den til, altså oppretter du en ny cookie hver gang du bruker et nytt navn på cookien, selv om det ser ut som om man skriver over document.cookie hver gang.

Dersom du ikke trenger å ha tilgang til dataene du skal lagre både fra javascript og PHP finnes det enklere alternativ, i PHP har du allerede superglobals, og i javascript er det local storage.

---

<div class="post-metadata">

**Author:** ![kongen](http://webforumet.no/letter_avatar_proxy/v4/letter/k/b487fb/32.png) [@kongen](http://webforumet.no/u/kongen)\
**Post date:** [mars 20, 2015, 3:25pm UTC](http://webforumet.no/t/javascript-cookie/23337/4 "2015-03-20T15:25:02Z")

</div>

Takk 🙂

Denne fungerer frem og tilbake mellom php og javascript. Fant også ut at man må sette php cookie før , det trengs ikke i javascript.

Har lagt merke til at ved javascript så brukes det funksjoner nesten hele tiden, mye mer enn php.
