无法获得Cookie

时间:2011-12-23 11:22:22

标签: php codeigniter cookies

到目前为止,我一直在使用Codeigniter中的会话。但是现在会话有很多数据。我喜欢使用cookies,但它对我不起作用。

  • 我首先在自动加载中加载cookie帮助程序。
  • 我使用此代码添加数据$this->input->set_cookie('users_new',$users_new);
  • var_dump($this->input->cookie('users_new'));有了这个,我试图获取数据。但它是空的。变量$users_new填充了数组,因此它不能为空。

当我尝试这个简单的例子时,cookie也是空的。

$cookie = array(
'name'   => 'some_value',
'value'  => 'The Value'
);
set_cookie($cookie);
var_dump(get_cookie('some_value'));
die();

怎么了?

感谢您的帮助!!

3 个答案:

答案 0 :(得分:1)

Cookie由浏览器发送,因此您必须等待用户重新加载页面。

所以基本过程是:

  1. 你设置了一个cookie
  2. 用户在下一个请求中重新发送cookie
  3. 您可以使用get_cookie
  4. 访问Cookie值

    编辑:

    setcookie以这种方式使用,它不适用于数组

    setcookie("TestCookie", $value);
    setcookie("TestCookie", $value, time()+3600);  /* expire dans 1 heure */
    setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1);
    

    所以你应该这样做:

    foreach ($cookie as $key => $val) {
       setcookie($key, $val);
    }
    

答案 1 :(得分:0)

  1. 您应该设置一个到期值,即从创建之时到它将到期的秒数。
  2. “name”值必须是字符串,而不是数组。如果您需要多个信息,则只需serialize()数组。
  3. 示例代码:

    $cookie = array(
        'name'   => 'users_new',
        'value'  => serialize($users_new),
        'expire' => '86500'
    );
    
    $this->input->set_cookie($cookie);
    

    如果只使用输入类,则无需加载cookie帮助程序。没问题,我知道,只是为了避免无用的代码行:)

答案 2 :(得分:0)

Cookie无法保存数组,只能保留纯文本。 @RageZ对for循环有一个很好的线索,它会设置许多cookie(与数组中的vars一样多)。 @Damien建议“序列化”,另一个选择是将jSon数组转换为带有原生php函数的str“json_encode()”