[nycphp-talk] cookies and experiation

Margaret Waldman mmwaldman at
Mon Jul 11 00:43:57 EDT 2011

So will the world come to an end or will it just weed out the big boys from the little boys?

Now, I know I’m in trouble.  I finally saw Hans message.

From: John Campbell 
Sent: Sunday, July 10, 2011 10:57 PM
To: NYPHP Talk 
Subject: Re: [nycphp-talk] cookies and experiation

The reason you cannot add 125 years is the 2038 problem.  A simple solution is to set the expiration date to Jan 1, 2038.  


On Sun, Jul 10, 2011 at 12:13 PM, Margaret Waldman <mmwaldman at> wrote:

  Jim,  I used the at 386 from ‘90-‘04.  I even put Windows ‘95 on it and surfed the web.  Granted it was slowed than you can imagine ...

  From: Jim Yi 
  Sent: Sunday, July 10, 2011 10:44 AM
  To: NYPHP Talk 
  Subject: Re: [nycphp-talk] cookies and experiation

  PHP has some useful predefined constants, particularly PHP_INT_MAX in this case (  What you should really be doing while setting the cookie is ignoring time() completely, and just set the expiration time to the maximum size of an integer.

    setcookie(“name”, “val”, PHP_INT_MAX);

  This way, the cookie expires in 2038 for everyone, which is the furthest expiration you can set anyway.

  On a more theoretical note, there really isn't a need to set a cookie's expiration date beyond, let's say 5 years.  For that cookie to even still be alive, you have to hope that the user:
  - is using the same computer for five years
  - has never reformatted the hard drive or re-installed a fresh OS
  - has never switched browsers
  - has never cleared their cookies

  I'd say a combination of all of the above is extremely rare, and I can't really think of a good use-case where a cookie would still be useful 5 years from now, given that the internet is constantly evolving.

  Jim Yi

  On Sun, Jul 10, 2011 at 9:56 AM, Margaret Waldman <mmwaldman at> wrote:

    I wanted to create a cookie that basically never expires.

    time() + x

    We can live to say 100 or so, so say 125 years expiration would be good.

    time() + 3944700000

    But that number is too big.

    Intval says on a 32 bit machine max is 2147483647.

    So 2147483647 – time() = 4294967294, which is bigger than 2147483647

    2147483647 = 68 years but because I’m adding time it grows bigger than the bigger integer

    But I really can only do this 2147483647  - time() = 837178076 26 years

    But php wasn’t crapping out on 290000000 + time(), so what really is the biggest integer

    Time today =            1310305571
    Time tomorrow =     1310391971
    Next year will be =   1341863171 (42 years)
    In 20 years will be = 1372420841 (52 years)

    So, 2147483647 – time in 20 year (1372420841) = 775062806 approx 23 years

    The numbers don’t look quite right but at time increases the life time you can extend in ints decreases.

    So, instead of just adding a value to time, I should

    $newLife = 2147483647  - time();

    setcookie(“name”, “val”, time() + newLife);

    I’m sure by the time, time() grows to be so big that this formula is an issue, integers will be big enough to handle it?

    Anyway, does anyone know the real max size of an integer? Cause it ain’t 2147483647 like the docs say for a 32 bit machine.

    Margaret Michele Waldman

    New York PHP Users Group Community Talk Mailing List


  New York PHP Users Group Community Talk Mailing List

  New York PHP Users Group Community Talk Mailing List

New York PHP Users Group Community Talk Mailing List
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the talk mailing list