• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 186
  • Last Modified:

cookie question

why wont the following expire after 5 seconds ... or do I misunderstand 'expire'. (I thought it should delete its self)


setcookie('bob','hello',time()+5);

0
stevencopley
Asked:
stevencopley
  • 4
  • 2
  • 2
  • +1
1 Solution
 
jpoesenCommented:
-> the "time" parameter is an *absolute* value, and starts counting from the moment you set the cookie.

As a result, if you use time()+5 you get the amount of seconds since 1970 (about 1 billion seconds) + 5 sec, so you set your cookie to expire in rougly 32 years.

php manual :

time()
- Return current UNIX timestamp
- usage:int time (void)

Returns the current time measured in the number of seconds since the Unix Epoch (January 1 1970 00:00:00 GMT).

In short, use
setcookie('bob','hello',5);

Good luck
jpoesnen
0
 
jpoesenCommented:
I can't even write my own name :(

jpoesen
0
 
VBTomCommented:
???

Are you going to award points?
0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
jpoesenCommented:
sure hope so :)
0
 
Richard QuadlingSenior Software DeveloperCommented:
jpoesen, I don't think you are correct.

From the PHP manual ...

Some examples follow how to send cookies: Example 1. setcookie() send examples

setcookie ("TestCookie", $value);
setcookie ("TestCookie", $value,time()+3600);  /* expire in 1 hour */
setcookie ("TestCookie", $value,time()+3600, "/~rasmus/", ".utoronto.ca", 1);
 
 
The setcookie parameters are ...

setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])

The expire parameter requires a proper time (i.e. time()).

So, there is no reason that

setcookie('bob','hello',time()+5);

will not create a cookie that will expire in 5 seconds.


Steven,

Once you've set the cookie with an automatic timeout, what are you doing to determine that the cookie has NOT expired as expected?

Richard.
0
 
jpoesenCommented:
Quite right. I used on old version of my message board to check. It was a version where I already started using session vars instead.

My mistake.

setcookie('bob','hello',time()+5);

makes a cookie that expires. But I don't think that "expires" means that the cookie is deleted, just that it is no longer valid.

Thanks for noticing, RQuadling.

jpoesen.
0
 
Richard QuadlingSenior Software DeveloperCommented:
Unfortunately, a cookie being deleted from the client's harddrive is not the same as expiring.

All PHP can do is say that it is no longer required.

Ho hum!

Richard.
0
 
stevencopleyAuthor Commented:
I thought that if I tried to reference

I tried what jpoesen said but 'bob' , once it had timed out I'd get '' instead of 'hello'.

I tried what jpoesen said but its still there.

what I did was saved time() to bob and then when I checked it, I compared bob to time() to see how long since it had been accessed, since it doesn't seem to disappear.

Thanks everyone for your help.

0
 
stevencopleyAuthor Commented:
I meant.

I tried what jpoesen said but 'bob' , once it had timed out I thought I'd get '' instead of 'hello'.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Cloud Class® Course: Microsoft Office 2010

This course will introduce you to the interfaces and features of Microsoft Office 2010 Word, Excel, PowerPoint, Outlook, and Access. You will learn about the features that are shared between all products in the Office suite, as well as the new features that are product specific.

  • 4
  • 2
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now