无法正确设置cookie

时间:2012-05-11 06:28:03

标签: php codeigniter

基于Code Igniter框架构建的网站。我有两个链接(喜欢和不喜欢)。单击链接时,对应的值会增加或减少。您可以看到该网站:http://joke.guluzade.com/jokes/view/24

我想要的是:该用户只能更改此值一次。我是用饼干做的。例如,如果用户点击“喜欢”链接,则值+5变为+6。然后,如果您单击“不喜欢”,则该值不得更改。用户应该只有一次机会喜欢或不喜欢。现在它无法正常工作,如果你单击就可以点击不喜欢,但我只想改变谎言或不喜欢的值一次。

我该怎么做:我检查cookie是否设置,函数什么都不做,如果没有设置cookie并更改值。但是如果cookie设置为喜欢,当你点击不喜欢它时就看不到那个cookie。

这是代码:

function vote ($mm, $id){ //get the parameters (like or dislike and id)
    $name = $mm;
    $value = (int)$id;
    $time = time()+3600;
    if(isset($_COOKIE[$value])){
            redirect($_SERVER['HTTP_REFERER']);
    } else {
        SetCookie($value, $name, $time);
        if($name == "like"){
            $this->db->select('like');
            $this->db->where('id', $id);
            $query = $this->db->get('jokes');
            $data = $query->row_array();
            $likes = $data['like'];
            $likes++;
            $dd = array();
            $dd['like'] = $likes;        
            $this->db->where('id', $id);
            $this->db->update('jokes', $dd);
            redirect($_SERVER['HTTP_REFERER']);                 
        } else {
            $this->db->select('dislike');
            $this->db->where('id', $id);
            $query = $this->db->get('jokes');
            $data = $query->row_array();
            $likes = $data['dislike'];
            $likes--;
            $dd = array();
            $dd['dislike'] = $likes;
            $this->db->where('id', $id);
            $this->db->update('jokes', $dd);   
            redirect($_SERVER['HTTP_REFERER']);               
        }    
    }
}

有人可以说,我做错了吗?

2 个答案:

答案 0 :(得分:2)

使用get_cookie('some_cookie')或get_cookie('some_cookie',TRUE);而不是$ cookie [$ value]。

此外,使用

为完整域设置cookie
                $cookie = array(
               'name'   => 'The Cookie Name',
               'value'  => 'The Value',
               'expire' => '86500',
               'domain' => '.some-domain.com',
               'path'   => '/',

                );

               set_cookie($cookie); 

答案 1 :(得分:0)