Yesterday, I wrote a post talking about session state and the short term memory of browser sessions. I mentioned that browsers are stateless. So we have to deal with session state in some other way. There are basically two ways…cookies and HTML5 storage. Full disclosure…I prefer HTML5 storage, but cookies are still in wide use, so it is important to know how they work. So let’s dive into cookies and look at an example.
Cookies are basically plain text files that store strings pertaining to a specific domain. Since they are plain text, DO NOT store anything that is sensitive in nature in a cookie.
Each cookie can have an expiration date on it. If you do not set a date on a cookie, then the cookie dies when the browser session ends, which kind of defeats the purpose. So put a date on all of your cookies. If you need it to be semi-permanent, put a date that is far out into the future.
So how do we create a cookie?
[code lang=”js”]
// Function to create/write a cookie
// Function will take three parameters…name of cookie, value of cookie
// and days it is set to last
function writeCookie(name, value, days) {
// By default, there is no expiration so the cookie is temporary
var expires = "";
// Specifying a number of days makes the cookie persistent
// Sending a days parameter is optional
if (days) {
// Access the date object to set an expiration date
var date = new Date();
// Grab the current time and add to it to set the expiration into the future
// The date will be set to however many days are passed to function
// Calculation for days is milliseconds (1000) * 60 seconds to a minute
// 60 minutes to an hour and 24 hours to a day
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
// Set the expires value
expires = "; expires=" + date.toGMTString();
}
// Set the cookie to the name, value, and expiration date
document.cookie = name + "=" + value + expires + "; path=/";
}
[/code]
So that is a function that you could use to write a cookie to the end user’s system. You could call it as follows…
[code lang=”js”]
// Create a cookie and store it for five years
writeCookie("some_cookie_name", someVariable, 5 * 365);
[/code]
In a future post, I will look at how we read cookies we have saved and even get rid of them.
Happy Coding!
Clay Hess