【问题标题】:How to retrieve cookie value in CodeIgniter?如何在 CodeIgniter 中检索 cookie 值?
【发布时间】:2011-09-18 14:16:17
【问题描述】:

我可以通过print_r($this->session->userdata);在codeigniter中打印会话值 如何在 codeigniter 中打印 cookie?我刚刚设置了一个cookie:

$cookie = array(
          'name'   => 'test_cookie',
          'value'  => 'test',
          'domain' => '/',
          'secure' => TRUE
          );

$this->input->set_cookie($cookie); 

如何打印上面的cookie?

【问题讨论】:

    标签: php codeigniter cookies setcookie


    【解决方案1】:

    加载cookie助手:

    $this->load->helper('cookie');
    

    然后用以下方法检索你的烹饪:

    $cookieData = get_cookie("cookie_name");
    

    注意,这些是使用输入类的别名,您也可以像这样检索和设置 cookie:

    $cookieData = $this->input->get_cookie("cookie_name");
    

    来源 http://ellislab.com/codeigniter/user-guide/helpers/cookie_helper.html

    【讨论】:

    • 谢谢,我已经尝试过了,它给了我错误Fatal error: Call to undefined method CI_Input::get_cookie() 我正在加载 cookie 助手。有什么想法吗?
    • -1 get_cookie() 是助手
    【解决方案2】:

    查看文档:Codeigniter Cookie Helper Guide

    它说你应该使用$this->input->cookie() 来检索一个cookie:

    $this->input->cookie('test_cookie', TRUE);
    

    【讨论】:

    • 我尝试打印这个,但它没有打印任何东西,也没有给出任何错误。
    • 你确定cookie已经设置好了吗?尝试使用 var_dump($this->input->cookie('test_cookie'));看看这是否返回 false - 如果是,则未设置 cookie。
    • 我收到bool(false) 。正如我在问题中提到的那样,我正在尝试设置 cookie。我在设置 cookie $this->load->helper('cookie'); 之前加载了 cookie 助手。知道有什么问题吗?
    • @okay,我发现了问题所在。我将时间参数作为字符串传递。
    • 尝试像这样设置你的cookie,用于测试目的: $this->input->set_cookie('test_cookie', 'My cookie value');我相信您的问题在于域值,因为您的域不能是 / 但必须是有效域。
    【解决方案3】:

    如果您使用的是谷歌浏览器,请使用检查元素查看 cookie 是否已设置...我认为您可以在 FF 中执行此操作,但我有一段时间没有使用 FF...我只有一个问题使用 cookie,那是我将域设置为我的实时域......所以我的 cookie 代码是这样的:

            $this->load->helper('cookie');
    
             $cookie = array(
               'name'   => 'the_cookie',
               'value'  => 'test value here',
               'expire' => '15000000',
               'prefix' => ''
            );
            $this->input->set_cookie($cookie);
    

    在这里您可以看到它显示在 Google Chrome 的“检查元素工具”中

    【讨论】:

    • 在浏览了 10 页后来到这里并开始工作。使用域作为 cookie 数组的元素并且无法创建 cookie。这最终帮助了谢谢。
    【解决方案4】:

    这在本地主机上对我有用,可能需要加强服务器的安全性

    $this->load->helper('cookie');     
    $cookie = array(
                        'name'   => 'data',
                        'value'  => '23',
                        'expire' =>  86500,
                        'secure' => false
                    );
                    $this->input->set_cookie($cookie); 
                    var_dump($this->input->cookie('data', false));  
    

    Expire 需要为数字,移除路径并将安全设置为 false

    【讨论】:

      【解决方案5】:

      如果下面提到的代码没有提供任何输出,那么修改 application/config/config.php 文件并设置:

      $config['global_xss_filtering'] = TRUE;
      
      $this->input->cookie('cookie_name', TRUE);
      

      否则只使用它会显示值

      $this->input->cookie('cookie_name'); 
      

      【讨论】:

        【解决方案6】:
        'secure' => TRUE
        

        这不允许我获取 cookie。


        设置一下

        'secure' => FALSE 
        

        看看它可能会起作用。

        【讨论】:

          【解决方案7】:

          设置security => TRUE 将不允许在本地打印cookie 值,它仅授予对安全连接的访问​​权限,因此除非您设置security => FALSE,否则它不会在本地主机中为您打印任何内容 与使用 codeigniter CI_Input 类相比,您可以获得 cookie 的值

          $this->input->cookie('cookie_name', TRUE);  //with xss filtering 
          $this->input->cookie('cookie_name');        //without xss filtering
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-03-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多