【问题标题】:codeigniter cookie set using posted variable cant retrieve its values使用已发布变量设置的 codeigniter cookie 无法检索其值
【发布时间】:2014-06-25 14:41:22
【问题描述】:

在我的索引页面中,我有一个输入字段来输入国家或城市名称。然后我将它发布到一个控制器,然后我将它设置为一个 cookie 和一个会话(用于测试)。

$visitingPlace = $this->input->post('place_visiting');
        $timestamp = now() + random_string('numeric', 5);
        $cookie[$timestamp] = array(
            'name' => 'searched_places',
            'value' => $visitingPlace,
            'expire' => '5184000',
        );
        $this->session->set_userdata($cookie);
        $this->input->set_cookie($cookie);

然后加载一个搜索结果页面

$this->load->view('header', $data);
        $this->load->view('top');
        $this->load->view('hotel_search_view');
        $this->load->view('footer');

在搜索结果页面中,我试图获取 cookie 值,但它总是返回 bool false

var_dump($this->input->cookie());
var_dump($this->session->all_userdata());

但会话显示所有详细信息。

bool(false) 

array(14) { ["session_id"]=> string(32) "4e940b327077d5ac23aea4ed8bef8a0a" ["ip_address"]=> string(3) "::1" ["user_agent"]=> string(109) "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36" ["last_activity"]=> int(1403675396) ["user_data"]=> string(0) "" [1403674268]=> array(3) { ["name"]=> string(15) "searched_places" ["value"]=> string(3) "sss" ["expire"]=> string(7) "5184000" } [1403674380]=> array(4) { ["name"]=> string(15) "searched_places" ["value"]=> string(4) "vila" ["expire"]=> string(7) "5184000" ["domain"]=> string(25) ".http://localhost/holasun" } [1403697663]=> array(4) { ["name"]=> string(15) "searched_places" ["value"]=> string(3) "sss" ["expire"]=> string(7) "5184000" ["domain"]=> string(25) ".http://localhost/holasun" } [1403754720]=> array(3) { ["name"]=> string(15) "searched_places" ["value"]=> string(5) "dsdas" ["expire"]=> string(7) "5184000" } [1403753967]=> array(3) { ["name"]=> string(15) "searched_places" ["value"]=> string(4) "sfdf" ["expire"]=> string(7) "5184000" } [1403770773]=> array(3) { ["name"]=> string(15) "searched_places" ["value"]=> string(3) "sss" ["expire"]=> string(7) "5184000" } [1403727272]=> array(3) { ["name"]=> string(15) "searched_places" ["value"]=> string(5) "sdfdf" ["expire"]=> string(7) "5184000" } [1403732164]=> array(3) { ["name"]=> string(15) "searched_places" ["value"]=> bool(false) ["expire"]=> string(7) "5184000" } [1403754757]=> array(3) { ["name"]=> string(15) "searched_places" ["value"]=> string(2) "sd" ["expire"]=> string(7) "5184000" } }

【问题讨论】:

    标签: php codeigniter cookies


    【解决方案1】:

    $this->input->cookie() 要求您输入名称以检索数据,例如,

     $this->input->cookie($timestamp); //for example
    
     $this->input->cookie('searched_places'); //for example
    

    【讨论】:

    • 我试过 $this->input->cookie('searched_places');但它仍然显示 bool(false) 并且在我的控制台中它在 cookie 下显示了一些哈希值和 3883 的大小
    • $this->input->cookie('searched_places');现在它正在使用它。
    • 您的回答对我有帮助,但 machineaddict 的回答是完整的答案。所以我选择它作为答案。
    • 我想,我已经回答了你的类似问题。玩得开心。 :D
    【解决方案2】:

    这是您在 cookie 中保存数据的方式:

    <?php
    
    $visitingPlace = $this->input->post('place_visiting');
    $cookie = array(
        'name'   => 'searched_places',
        'value'  => $visitingPlace,
        'expire' => '5184000',
        'path'   => '/'
    );
    $this->input->set_cookie($cookie);
    

    这是您从 cookie 中检索数据的方式:

    <?php
    
    $cookie_value = $this->input->cookie('searched_places');
    

    这是您在会话中保存数据的方式:

    <?php
    
    $visitingPlace = $this->input->post('place_visiting');
    $this->session->set_userdata('searched_places', $visitingPlace);
    

    这是您从会话中检索数据的方式:

    <?php
    
    $session_value = $this->session->userdata('searched_places');
    

    对于 cookie read the manual。 对于会话read the manual。请务必阅读手册!

    【讨论】:

    • 与此不同。
    • 不,这正是您需要设置 cookie 或会话的方式。您的代码无效!我看到了你的另一个问题。用你的大脑。你已经有了答案。不要因为我没有给你确切的答案而投票给我!
    • 就我而言,我试图保存用户正在搜索的所有地方,而不仅仅是一个地方。正如你提到的那样,我无法保存多个位置,因为它覆盖了前一个位置。
    • 这就是为什么我说要使用你的大脑。使用Nil'Z 回答并将数据保存在序列化的会话中。并且不要将其保存在 cookie 中,因为 cookie 有 4KB 的存储限制。
    • stackoverflow 说没有编辑你的答案我不能投票。
    猜你喜欢
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2017-07-21
    • 1970-01-01
    相关资源
    最近更新 更多