首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置CodeIgniter中不起作用的cookie

问设置CodeIgniter中不起作用的cookie
EN

Stack Overflow用户
提问于 2012-09-16 12:24:27
回答 3查看 13K关注 0票数 7

我想用这个函数csrf_cookie_name的值设置名称为$this->security->get_csrf_hash();的cookie,但是它不起作用。

我的控制器里有这样的东西:

代码语言:javascript
复制
   $csrf_cookie_value = $this->security->get_csrf_hash();
   $this->input->set_cookie('csrf_cookie_name', $csrf_cookie_value);
   echo $this->input->cookie('csrf_cookie_name'); 
   die();

但它没有发挥作用,也没有得到任何回应。

如果我只尝试这个:

代码语言:javascript
复制
 $csrf_cookie_value =  $this->security->get_csrf_hash();
 echo $csrf_cookie_value;

我工作,生成的字符串被回显出来。

因此,我假设接下来两行中的某些内容是错误的:

代码语言:javascript
复制
$this->input->set_cookie('csrf_cookie_name', $csrf_cookie_value);
echo $this->input->cookie('csrf_cookie_name'); 

谢谢你的建议。

EN

回答 3

Stack Overflow用户

发布于 2012-09-21 09:26:59

您需要指定cookie的生存期。0将是一个会话cookie,其他任何内容都将添加到time()中。

如果没有指定生存期,CI将解释要删除cookie的。这正是它所做的:)

代码语言:javascript
复制
$this->input->set_cookie('name', 'value', 0);    //expires when the browser window closes
$this->input->set_cookie('name', 'value', 3600); //expires in one hour
$this->input->set_cookie('name', 'value');       //will delete the cookie (if the cookie does not exist, you will not notice anything happening)
票数 20
EN

Stack Overflow用户

发布于 2012-09-16 18:10:26

您没有得到回显cookie的原因是,$this->input->cookie()函数直接从全局$_COOKIE数组读取,而$this->input->set_cookie()没有立即在服务器上填充$_COOKIE数组。相反,$this->input->set_cookie()排队将cookie发送回并存储在浏览器中。只有在用户的下一个HTTP请求上,您才能重新观察这个cookie。

其次,也许更重要的是,我认为您使用csrf cookie是不正确的。为了防止跨站点请求伪造,只需要启用它并在config/config.php中设置它的属性。就是这样。根本不需要在控制器中读和写它。

票数 7
EN

Stack Overflow用户

发布于 2012-09-22 12:16:36

饼干已经在那里了。您可以通过Javascript查询以下内容:

代码语言:javascript
复制
$.cookie("<?php echo $this->config->item("csrf_cookie_name"); ?>");

我希望是有用的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12446834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档