From: gotenforward@yahoo.com
Operating system: FreeBSD 4.3
PHP version: 4.0.6
PHP Bug Type: HTTP related
Bug description: setcookie would not work when expire is set
I pretty much get the same error as this link
http://www.php.net/bugs.php?id=11478&edit=1
Over a couple hundreds of users, all of them works fine with IE 5.0+
However, some of the user can not login due to the cookie is not set.
Whenever I do
setcookie("username",$user,time()+3600,"/",".domain.com");
Some of the users using IE would not get the cookie.
But when i just change it to
setcookie("username",$user,"","/",".domain.com");
It works. But not setting expire time will not write the cookie to
harddisk, it just stored into memory, which is not what I want.
So, I tried to use the header function and see if that helps.
$time = mktime()+ $config[cookieTTL];
$date = gmdate("l, d-M-Y H:i:s", ($time));
header("Set-Cookie: $cookiename=$tmpstring; expires=$date GMT; path=/;");
IE still do not pick up the cookie.
Here is a little function I use to store cookie
function putCookie($config,$cookiename, $varname, $data, $send="") {
// function to store cookie, use serialize() to bypass the limit of using
20 cookies per domain.
// And make it easier to add new cookie later.
//keep this array always static so that when we get out of this function,
it still keep the variable.
static $tmpArray;
$tmpArray[$varname] = $data;
if ($send != "") {
$tmpstring = serialize($tmpArray);
$tmpstring = base64_encode($tmpstring);
$time = mktime()+ $config[cookieTTL];
$date = gmdate("l, d-M-Y H:i:s", ($time));
setCookie($cookiename, $tmpstring, "", $config[cookie_path],
$config[CookieURL]); // now we clean the static array after we send the
cookie
unset($tmpstring);
$tmpArray = "";
unset($tmpArray);
}
}
--
Edit bug report at: http://bugs.php.net/?id=13116&edit=1