codeigniter cookie过期问题
我有一个cookie问题,cookie的到期日期总是设置为会话结束时,这不是我想要的。我看了一下,它建议我将expire设置为time()+60*60*24*30,我已经这么做了codeigniter cookie过期问题,codeigniter,cookies,Codeigniter,Cookies,我有一个cookie问题,cookie的到期日期总是设置为会话结束时,这不是我想要的。我看了一下,它建议我将expire设置为time()+60*60*24*30,我已经这么做了 //Create basket cookie $cookie = array( 'name' => 'basket_id', 'value' => $basket_id, 'exp
//Create basket cookie
$cookie = array(
'name' => 'basket_id',
'value' => $basket_id,
'expire' => time()+60*60*24*30,
'domain' => 'domain',
'path' => '/',
'prefix' => '',
);
set_cookie($cookie);
我不知道这是否可以归结为Codeigner设置,但我的ci_会话cookie有一个正常的到期日期。2011年6月9日星期四10:39:02 GMT
//Create basket cookie
$cookie = array(
'name' => 'basket_id',
'value' => $basket_id,
'expire' => time()+60*60*24*30,
'domain' => 'domain',
'path' => '/',
'prefix' => '',
);
set_cookie($cookie);
这是我查看cookie时得到的结果:
//Create basket cookie
$cookie = array(
'name' => 'basket_id',
'value' => $basket_id,
'expire' => time()+60*60*24*30,
'domain' => 'domain',
'path' => '/',
'prefix' => '',
);
set_cookie($cookie);
Name basket_id
Value 28
Host .host
Path /
Secure No
Expires At End Of Session
这是我传递给cookie的数组的一个例子
//Create basket cookie
$cookie = array(
'name' => 'basket_id',
'value' => $basket_id,
'expire' => time()+60*60*24*30,
'domain' => 'domain',
'path' => '/',
'prefix' => '',
);
set_cookie($cookie);
Array ( [name] => basket_id [value] => 30 [expire] => 1310202067 [domain] => host [path] => / [prefix] => )
请查看@Gowri提供的正确操作方法
//Create basket cookie
$cookie = array(
'name' => 'basket_id',
'value' => $basket_id,
'expire' => time()+60*60*24*30,
'domain' => 'domain',
'path' => '/',
'prefix' => '',
);
set_cookie($cookie);
您可以尝试在config.php
CI中调整会话过期时间会话最初保存在cookie中:
//Create basket cookie
$cookie = array(
'name' => 'basket_id',
'value' => $basket_id,
'expire' => time()+60*60*24*30,
'domain' => 'domain',
'path' => '/',
'prefix' => '',
);
set_cookie($cookie);
您的有效期设置不正确您不必包含time(),因为您所设置的实际上是time()的到期日期
//Create basket cookie
$cookie = array(
'name' => 'basket_id',
'value' => $basket_id,
'expire' => time()+60*60*24*30,
'domain' => 'domain',
'path' => '/',
'prefix' => '',
);
set_cookie($cookie);
当您的expire值不正确时,它默认为0,而设置为会话的长度
//Create basket cookie
$cookie = array(
'name' => 'basket_id',
'value' => $basket_id,
'expire' => time()+60*60*24*30,
'domain' => 'domain',
'path' => '/',
'prefix' => '',
);
set_cookie($cookie);
因此,它应该是:
//Create basket cookie
$cookie = array(
'name' => 'basket_id',
'value' => $basket_id,
'expire' => time()+60*60*24*30,
'domain' => 'domain',
'path' => '/',
'prefix' => '',
);
set_cookie($cookie);
$cookie = array(
'name' => 'basket_id',
'value' => $basket_id,
'expire' => 86400*30,
'domain' => 'domain',
'path' => '/',
'prefix' => '',
);
您可以添加参数
//Create basket cookie
$cookie = array(
'name' => 'basket_id',
'value' => $basket_id,
'expire' => time()+60*60*24*30,
'domain' => 'domain',
'path' => '/',
'prefix' => '',
);
set_cookie($cookie);
$config['cookie_lifetime'] = 1800
在config.php中,您可以在libraries/Sessions/Session.php中找到原因,代码如下
//Create basket cookie
$cookie = array(
'name' => 'basket_id',
'value' => $basket_id,
'expire' => time()+60*60*24*30,
'domain' => 'domain',
'path' => '/',
'prefix' => '',
);
set_cookie($cookie);
$expiration = config_item('sess_expiration');
if (isset($params['cookie_lifetime']))
{
$params['cookie_lifetime'] = (int) $params['cookie_lifetime'];
}
else
{
$params['cookie_lifetime'] = (!isset($expiration) && config_item('sess_expire_on_close'))
? 0 : (int) $expiration;
}
我认为这并不能真正回答问题。对于直接设置cookie expiration变量不会产生反映手动设置的cookie过期日期的输出,调整会话过期时间并不是一个真正的解决方案。相反,请阅读这个对我有用的解决方案:我同意你的看法,如果你想在会话到期后保存一些将持续存在的信息,那么答案是错误的,@sn0r-answer是一个更好的答案。这不是正确的答案,这个答案只会让所有用户感到困惑和分心,只需编辑或删除它即可,无论如何,这与问题无关。请参见下面@sn0r给出的正确答案