php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Doc Bug #39994 setcookie() docs don't say what to pass in "expire" to set a session cookie
Submitted: 2006-12-31 04:25 UTC Modified: 2007-01-08 10:35 UTC
From: jason191 at herkamire dot com Assigned: bjori (profile)
Status: Closed Package: Documentation problem
PHP Version: Irrelevant OS:
Private report: No CVE-ID: None
 [2006-12-31 04:25 UTC] jason191 at herkamire dot com
Description:
------------
The documentation for setcookie() here:

http://us2.php.net/manual/en/function.setcookie.php

does not specify what value to pass to the "expire" parameter to get a session cookie.

It does say that the default value is a session cookie, but doesn't say how to get this result by passing a value.

This is important information for two reasons:

1) I wrote a function that calls setcookie() and has a parameter for the length of time the cookie will last. I would like to be able to inform users what value they can pass to get a session cookie.

2) Perhaps there is a way, but I don't know how to pass the parameters after "expire" without setting the "expire parameter. I'm sure many others don't know how either.


One of the user comments says that he was able to get a session cookie by passing 0 (zero), but I do not know if this works across different PHP versions.

Thank you for your time.

Best regards,
      - Jason Woofenden


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2006-12-31 04:28 UTC] jason191 at herkamire dot com
cleaned up bug title
 [2007-01-07 13:06 UTC] bjori@php.net
Sorry, but your problem does not imply a bug in PHP itself.  For a
list of more appropriate places to ask for help using PHP, please
visit http://www.php.net/support.php as this bug system is not the
appropriate forum for asking support questions.  Due to the volume
of reports we can not explain in detail here why your report is not
a bug.  The support channels will be able to provide an explanation
for you.

Thank you for your interest in PHP.

setcookie() _sets_ cookies, it does not retrieve them.
Use the $_COOKIE autoglobal array.
 [2007-01-07 19:59 UTC] jason191 at herkamire dot com
This is not a support request.

You might say that it's not "in PHP itself", but that's why I set the category to "Documentation problem".

I apologize for my grammar, I was not trying to fetch the value of a cookie, but create one.

I know what setcookie() does, except the API is not fully specified in the documentation. The documentation should specify what value you can pass to setcookie() to get a session cookie (rather than a cookie that expires at a certain date) since it obviously can create session cookies.
 [2007-01-07 20:04 UTC] jason191 at herkamire dot com
by "get" I meant "create" not "retrieve" sorry about the ambiguity there
 [2007-01-07 20:08 UTC] bjori@php.net
Quote from the setcookie() docs: "time()+60*60*24*30 will 
set the cookie to expire in 30 days. If not set, the 
cookie will expire at the end of the session (when the 
browser closes)."

Note the "If not set" clause (which is essentially the 
same as passing 0).

If you believe that sentence can be reworded any better 
please share it with us :)
 [2007-01-08 03:04 UTC] jason191 at herkamire dot com
I'd put this in the description:

The Unix timestamp for when the cookie should expire or 0 for a session cookie. (Session cookies should be kept until the browser closes.) Default is 0. See also: time(), mktime()

And kill the second sentence in the example (since it's not an example.)

Also, I think it is unreasonable to assume that people would assume that "not set"ing something would be the same as passing zero. For example, the following two calls produce dramatically different results:

setcookie('foo', 'bar', $tomorrow);
setcookie('foo', 'bar', $tomorrow, 0, 0);

And I know I'm not alone it this. Buried in the comments on the docs page (link in my original post above) is someone asking what to pass in this parameter for a session cookie, and posting that it seemed to work by passing zero. Another post down lower passes false, which apparently also works. But neither of them have any idea if their solution works across different versions of PHP, or if it will continue to be supported.
 [2007-01-08 10:35 UTC] bjori@php.net
This bug has been fixed in the documentation's XML sources. Since the
online and downloadable versions of the documentation need some time
to get updated, we would like to ask you to be a bit patient.

Thank you for the report, and for helping us make our documentation better.


 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Thu Jul 17 14:04:04 2025 UTC