codeigniter cookie过期问题

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

我有一个cookie问题,cookie的到期日期总是设置为会话结束时,这不是我想要的。我看了一下,它建议我将expire设置为time()+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);
我不知道这是否可以归结为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给出的正确答案