By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
440,262 Members | 1,161 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 440,262 IT Pros & Developers. It's quick & easy.

How do I make a session cookie?

P: 11
How do I make this code below into a session cookie that deletes once the page is closed?

Expand|Select|Wrap|Line Numbers
  1. <script>
  2.  
  3. /*
  4. Very simple validation for the login.
  5. */
  6. function validateLogin()
  7. {
  8.    var username = document.getElementById("username").value;
  9.    var pwd = document.getElementById("password").value;
  10.    // encrypt the username and password
  11.    var userEntryEncryption = hex_md5 (username + pwd);
  12.  
  13.    /* 
  14.    Encrypt "username" + "books" and compare to what the user entered in the 
  15.    username and password fields. The comparison takes the 'hash' of the
  16.    'userEntryEncryption' variable and the 'md5Encryption' variable and test
  17.    whether they match.
  18.    NOTE: On a production site, the 'userEntryEncryption' would be sent to some server 
  19.    side code on a webserver, which would perform the validation and return true or
  20.    false, depending on whether it succeeded.
  21.    */
  22.    var md5Encryption = hex_md5 ("username" + "books");
  23.  
  24.    // both hashes must match
  25.    if (userEntryEncryption === md5Encryption)
  26.    {
  27.       /*
  28.       Determine the expiry for the cookie depending on whether the user
  29.       wants the login information remembered.
  30.       */
  31.       var remember = document.getElementById("rememberMe").checked;
  32.       var expiry = getCookieExpiry(remember);
  33.  
  34.       // the value of our cookie is the encrypted username + password
  35.       setCookie(md5Encryption, expiry);
  36.  
  37.       // redirect to the "members" page
  38.       document.location.href = "checkout2.html";
  39.       return true;
  40.    }
  41.  
  42.    document.getElementById("errorMessage").innerHTML = 
  43.             "The login information is incorrect. Please try again.";
  44.    return false;
  45. }
  46.  
  47.  
  48. /*
  49. Sets the cookie for a single logon.
  50. */
  51. function setCookie(encryptedPwd, expiry)
  52. {
  53.    var key = "userLogin";
  54.    var value = encryptedPwd;
  55.    var path = "/";
  56.  
  57.    document.cookie = key + "=" +escape( value ) +
  58.        ( ( expiry ) ? ";expires=" + expiry.toGMTString() : "" ) +
  59.        ( ( path ) ? ";path=" + path : "" );
  60. }
  61.  
  62.  
  63. /*
  64. If the user wants the login information remembered 
  65. (i.e. "rememberMe" is true), set a long expiry date, 
  66. otherwise, leave the expiry date empty so that the cookie
  67. will be deleted when the browser is closed.
  68. */
  69. function getCookieExpiry(rememberMe)
  70. {
  71.    var expiresDate;
  72.  
  73.    if (rememberMe === true)
  74.    {
  75.       // set time, it's in milliseconds
  76.       var today = new Date();
  77.       today.setTime( today.getTime() );
  78.  
  79.       /*
  80.       This will set the expiry date for x number of days.
  81.       To make it for hours, delete * 24, for minutes, 
  82.       delete * 60 * 24.
  83.       */
  84.       var expires = 365;
  85.       expires = expires * 1000 * 60 * 60 * 24;
  86.       expiresDate = new Date( today.getTime() + (expires) );
  87.    }
  88.  
  89.    // if "rememberMe" is false, "expiresDate" has no value 
  90.  
  91.    return expiresDate;
  92. }
  93.  
  94.  
  95.  
  96.  
  97. /*
  98. Returns the cookie associated with the "key" variable.
  99. */
  100. function getCookie( key ) 
  101. {
  102.    // first we'll split this cookie up into key/value pairs
  103.    // note: document.cookie only returns key=value, not the other components
  104.    var allCookies = document.cookie.split( ';' );
  105.    var tempCookie = '';
  106.    var cookieName = '';
  107.    var cookieValue = '';
  108.    var cookieFound = false; // set boolean true/false, default is false
  109.  
  110.    for ( i = 0; i < allCookies.length; i++ )
  111.    {
  112.       // now we'll split apart each key=value pair
  113.       tempCookie = allCookies[i].split( '=' );
  114.  
  115.       // and trim left/right whitespace while we're at it
  116.       cookieName = tempCookie[0].replace(/^\s+|\s+$/g, '');
  117.  
  118.       // if the extracted cookieName matches the "key" parameter
  119.       if ( cookieName == key )
  120.       {
  121.          cookieFound = true;  // cookie is found
  122.          // we need to handle case where cookie has no value but exists (no = sign, that is):
  123.          if ( tempCookie.length > 1 )
  124.          {
  125.             cookieValue = unescape( tempCookie[1].replace(/^\s+|\s+$/g, '') );
  126.          }
  127.          break;
  128.       }
  129.       tempCookie = null;
  130.       cookieName = '';
  131.    }
  132.    if ( !cookieFound )  // the user has not logged in yet so go to the login page
  133.    {
  134.       location.href = "checkout.html";
  135.    }
  136.    // otherwise, set the CSS style to visible
  137.    else
  138.    {
  139.       document.getElementById('content').style.visibility = "visible";   
  140.    }
  141. }
  142.  
  143. </script>
Thanks
Mar 7 '11 #1
Share this Question
Share on Google+
3 Replies


Dormilich
Expert Mod 5K+
P: 8,639
if you want to delete the cookie when the page is closed, you have to do that by JavaScript itself (e.g. the unload or beforeunload event). if it suffices to delete the cookie when the browser is closed, set the cookie lifetime to 0.
Mar 7 '11 #2

P: 11
To set the life of the cookie to 0 would i do this?

Expand|Select|Wrap|Line Numbers
  1. <script>
  2. function getCookieExpiry(rememberMe)
  3. {
  4.    var expiresDate;
  5.  
  6.    if (rememberMe === true)
  7.    {
  8.       // set time, it's in milliseconds
  9.       var today = new Date();
  10.       today.setTime( today.getTime() );
  11.  
  12.       /*
  13.       This will set the expiry date for x number of days.
  14.       To make it for hours, delete * 24, for minutes, 
  15.       delete * 60 * 24.
  16.       */
  17.       var expires = 0;
  18.       expiresDate = new Date( today.getTime() + (expires) );
  19.    }
  20.  
  21.    // if "rememberMe" is false, "expiresDate" has no value 
  22.  
  23.    return expiresDate;
  24. }
  25. </script>
Will that make it a session cookie?

Thanks
Mar 9 '11 #3

Dormilich
Expert Mod 5K+
P: 8,639
The Expires directive tells the browser when to delete the cookie. It is specified in the form of Wdy, DD-Mon-YYYY HH:MM:SS GMT, indicating the exact date/time this cookie will expire.
if you just omit the Expires directive, the lifetime is set as 0
Mar 9 '11 #4

Post your reply

Sign in to post your reply or Sign up for a free account.