The reason you cannot add 125 years is the 2038 problem. A simple solution is to set the expiration date to Jan 1, 2038.
http://en.wikipedia.org/wiki/Year_2038_problem -jc On Sun, Jul 10, 2011 at 12:13 PM, Margaret Waldman <mmwald...@nyc.rr.com>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 <j...@jimyi.com> > *Sent:* Sunday, July 10, 2011 10:44 AM > *To:* NYPHP Talk <talk@lists.nyphp.org> > *Subject:* Re: [nyphp-talk] cookies and experiation > > PHP has some useful predefined constants, particularly PHP_INT_MAX in > this case (http://php.net/manual/en/reserved.constants.php). 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 <mmwald...@nyc.rr.com>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 >> http://lists.nyphp.org/mailman/listinfo/talk >> >> http://www.nyphp.org/Show-Participation >> > > ------------------------------ > _______________________________________________ > New York PHP Users Group Community Talk Mailing List > http://lists.nyphp.org/mailman/listinfo/talk > > http://www.nyphp.org/Show-Participation > > > _______________________________________________ > New York PHP Users Group Community Talk Mailing List > http://lists.nyphp.org/mailman/listinfo/talk > > http://www.nyphp.org/Show-Participation >
_______________________________________________ New York PHP Users Group Community Talk Mailing List http://lists.nyphp.org/mailman/listinfo/talk http://www.nyphp.org/Show-Participation