codeigniter cookie到期问题

时间:2011-06-09 09:10:02

标签: codeigniter cookies

我有一个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] => ) 

3 个答案:

答案 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;
}