我有一个cookie问题,我的cookie上的失效日期总是设置为会话结束,这不是我想要的。我做了一些风格,它建议将到期设置为时间()+ 60 * 60 * 24 * 30,我已经完成了。
//Create basket cookie
$cookie = array(
'name' => 'basket_id',
'value' => $basket_id,
'expire' => time()+60*60*24*30,
'domain' => 'domain',
'path' => '/',
'prefix' => '',
);
set_cookie($cookie);
我确实想知道它是否可以归结为Codeignter设置,但我的ci_session cookie有一个正常的到期日期。星期四,2011年6月9日10:39:02 GMT
这是我查看cookie时的结果:
Name basket_id
Value 28
Host .host
Path /
Secure No
Expires At End Of Session
这是我传递给cookie的数组的一个例子。
Array ( [name] => basket_id [value] => 30 [expire] => 1310202067 [domain] => host [path] => / [prefix] => )
答案 0 :(得分:6)
您的失效日期设置不正确。 您不必包含时间(),因为您设置的实际上是时间()的到期日期。
如果您的过期值不正确,则默认为0,而不是设置为会话的长度。
因此应该是:
$cookie = array(
'name' => 'basket_id',
'value' => $basket_id,
'expire' => 86400*30,
'domain' => 'domain',
'path' => '/',
'prefix' => '',
);
答案 1 :(得分:3)
您可以尝试在config.php
CI会话中调整会话到期时间最初保存在Cookie中:
/** Session Variables
---------------------------------------
| 'session_expiration' = the number of SECONDS you want the session to last.
| by default sessions last 7200 seconds (two hours). Set to zero for no expiration.
|
*/
$config['sess_expiration'] = 7200;
答案 2 :(得分:0)
您可以添加参数
$config['cookie_lifetime'] = 1800
在config.php中,您可以在libraries / Sessions / Session.php中找到原因,代码如下
$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;
}