在CodeIgniter中检查cookie是否存在

8
我正在使用一个与PHP有关的搜索系统,它将搜索到的文本添加到数组中,并使用json_encode()将其放入cookie中。
问题是:我需要检查cookie是否已经存在,如果不存在,则创建它。
我使用以下代码来简单地验证它是否存在,但没有成功:
{
        $search     = $this->input->post('search_text');
        $types      = $this->input->post('search_type');
        $checkboxes = "";
        if(!empty($types))
        {
            foreach($types as $v)
                $checkboxes = $v.",";
        }

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

        //cookie's array
        $search_history = array();
        array_push($search_history, $search);

        //cookie check 1
        if(get_cookie('search')!=''){
            echo "cookie exists";
        }else
            echo "cookie doesn't exist";

        // set cookie 
        $cookie = array(
            'name'   => 'search',
            'value'  => json_encode($search_history),
            'expire' => time()+86500
        );
        set_cookie($cookie);

        //cookie check 2
        if(get_cookie('search')!=''){
            echo "cookie exists";
        }else
            echo "cookie doesn't exist";

        //echo get_cookie('search');

        //redirect('search/'.urlencode($search).'/'.urlencode($checkboxes)); 
    }

我可以创建cookie并获取其值,但似乎无法在PHP代码中找到检查是否已经创建的方法。
已尝试过以下内容:
if(get_cookie('search')!='')

,

if(get_cookie('search')!=null)

if(get_cookie('search'))

但是这两个似乎都不起作用。

编辑:

如建议所述,我现在正在使用这个方法,它不会创建cookie。

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

        //cookie's array
        $search_history = array();
        array_push($search_history, $search);

        if(cookie('search') == false){
            // set cookie 
            $cookie = array(
                'name'   => 'search',
                'value'  => json_encode($search_history),
                'expire' => time()+86500
            );
            set_cookie($cookie);
        }            

最终编辑

问题已解决。

 //checks if the cookie exists
        if($this->input->cookie('cookiename')!=''){
            //exists
        }

1
https://ellislab.com/codeigniter/user-guide/libraries/input.html - Arun Unnikrishnan
我用你给我的新信息编辑了这篇文章。 - Faquir
1
如果($this->input->cookie('search', TRUE)) - Mani
实际上它没有起作用。就像@Mani所说的那样,这种方式无论cookie是否已定义,都会让我进入if条件中。我尝试过在cookie函数中使用或不使用TRUE参数,结果完全相同。 - Faquir
1个回答

7
使用 get_cookie()
if (is_null(get_cookie('cookiename'))) {
 //set yours cookie here
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接