Posted By

elightbo on 03/20/07


Tagged

cookie


Versions (?)

Who likes this?

4 people have marked this snippet as a favorite

vali29
nicozdev
brainphat
wirenaught


Cookie functions in javascript


 / Published in: JavaScript
 

URL: http://www.quirksmode.org/js/cookies.html#script

createCookie

When calling createCookie() you have to give it three bits of information: the name and value of the cookie and the number of days it is to remain active. In this case the name-value pair should become ppkcookie=testcookie and it should be active for 7 days.

createCookie('ppkcookie','testcookie',7)

If you set the number of days to 0 the cookie is trashed when the user closes the browser. If you set the days to a negative number the cookie is trashed immediately.

The function receives the arguments and starts doing its job.

function createCookie(name,value,days) {

First of all see if there is a days value. If there isn't we don't need to do the time calculation.

if (days) {

If there is, create a new Date object containing the current date.

    var date = new Date();

Now get the current Time (in milliseconds) and add the required number of days (in milliseconds). Set the Time of the date to this new value, so that it now contains the date in milliseconds that the cookie should expire.

    date.setTime(date.getTime()+(days*24*60*60*1000));

Set the variable expires to this date in the UTC/GMT format required by cookies.

    var expires = "; expires="+date.toGMTString();
}

If 0 is passed to the function, expires is not set and the cookie expires when the user closes his browser..

else var expires = "";

Finally write the new cookie into document.cookie in the correct syntax.

document.cookie = name+"="+value+expires+"; path=/";

}

Cookie created. readCookie

To read out a cookie, call this function and pass the name of the cookie. Put the name in a variable. First check if this variable has a value (if the cookie does not exist the variable becomes null, which might upset the rest of your function), then do whatever is necessary.

var x = readCookie('ppkcookie1') if (x) { [do something with x] }

The function receives the argument and starts.

function readCookie(name) {

We're going to search for the name of the cookie, followed by an =. So create this new string and put it in nameEQ:

var nameEQ = name + "=";

Then split document.cookie on semicolons. ca becomes an array containing all cookies that are set for this domain and path.

var ca = document.cookie.split(';');

Then we go through the array (so through all cookies):

for(var i=0;i < ca.length;i++) {

Set c to the cookie to be checked.

    var c = ca[i];

If the first character is a space, remove it by using the substring() method. Continue doing this until the first character is not a space.

    while (c.charAt(0)==' ') c = c.substring(1,c.length);

Now string c begins with the name of the current cookie. If this is the name of the desired cookie

    if (c.indexOf(nameEQ) == 0)

we've found what we were looking for. We now only need to return the value of the cookie, which is the part of c that comes after nameEQ. By returning this value we also end the function: mission accomplished.

    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}

If, after having gone through all cookies, we haven't found the name we're looking for, the cookie is not present. We return null.

return null;

}

Cookie read. eraseCookie

Erasing is extremely simple.

eraseCookie('ppkcookie')

Pass the name of the cookie to be erased

function eraseCookie(name) {

and call createCookie() to set the cookie with an expiry date of one day ago.

createCookie(name,"",-1);

}

The browser, seeing that the expiry date has passed, immediately removes the cookie.

  1. function createCookie(name,value,days) {
  2. if (days) {
  3. var date = new Date();
  4. date.setTime(date.getTime()+(days*24*60*60*1000));
  5. var expires = "; expires="+date.toGMTString();
  6. }
  7. else var expires = "";
  8. document.cookie = name+"="+value+expires+"; path=/";
  9. }
  10.  
  11. function readCookie(name) {
  12. var nameEQ = name + "=";
  13. var ca = document.cookie.split(';');
  14. for(var i=0;i < ca.length;i++) {
  15. var c = ca[i];
  16. while (c.charAt(0)==' ') c = c.substring(1,c.length);
  17. if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  18. }
  19. return null;
  20. }
  21.  
  22. function eraseCookie(name) {
  23. createCookie(name,"",-1);
  24. }

Report this snippet  

Comments

RSS Icon Subscribe to comments
Posted By: brainphat on October 12, 2009

Awesome. Just what I needed, but attribution needed? http://www.quirksmode.org/js/cookies.html#script

You need to login to post a comment.