php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #28850 Passing 0 as expire in setcookie is not the same as passing nothing
Submitted: 2004-06-20 03:36 UTC Modified: 2004-06-22 03:32 UTC
From: fromphpnet at blaksaga dot com Assigned:
Status: Not a bug Package: Session related
PHP Version: 4.3.7 OS: Linux
Private report: No CVE-ID: None
View Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
If you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: fromphpnet at blaksaga dot com
New email:
PHP Version: OS:

 

 [2004-06-20 03:36 UTC] fromphpnet at blaksaga dot com
Description:
------------
The overall jist of the problem is this.  I want to be able to set a cookie and specify the domain and path WITHOUT setting an expiration (making the cookie get killed when the browser is closed).

This is what the documentation for setcookie states:

 All the arguments except the name argument are optional. You may also replace an argument with an empty string ("") in order to skip that argument. Because the expire and secure arguments are integers, they cannot be skipped with an empty string, use a zero (0) instead.

Unfortunately, using a 0 for expire has different results than when passing nothing.  The cookie is not killed at session end when using 0 like it should be.

These statements should produce exactly the same results but do not:

setcookie ( "blaksaga_cookies" , "enabled", 0 );
setcookie ( "blaksaga_cookies2" , "enabled" );

This is either a bug in the setcookie function or in your documentation.  None-the-less, there needs to be some way to skip the expire argument while passing domain and path arguments.


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2004-06-22 00:44 UTC] iliaa@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

If you want the value to default to whatever PHP defaults 
to pass NULL. 
 [2004-06-22 03:32 UTC] fromphpnet at blaksaga dot com
I'm sorry, but in my eyes this is a bug.  If nothing else, it is a documentation bug.

-----
 All the arguments except the name argument are optional. You may also replace an argument with an empty string ("") in order to skip that argument. Because the expire and secure arguments are integers, they cannot be skipped with an empty string, use a zero (0) instead.
-----

Unless I am reading it wrong, the documentation is incorrect.

But thank you for your time.  I will post a comment on the doc page about this.  If you could include/change it in the docs it would be appreciated.  Thanks,
blaksaga
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Sat Nov 29 14:00:01 2025 UTC