2012-05-11 3 views
0

Сайт построен на основе кода. У меня есть две ссылки (вроде и не нравится). Когда вы нажимаете на ссылку, соответствующее значение увеличивается или уменьшается. Вы можете увидеть сайт: http://joke.guluzade.com/jokes/view/24не может установить cookie правильно

Что я хочу: этот пользователь может изменить это значение только один раз. Я делаю это с помощью файлов cookie. Например, если пользователь нажимает на ссылку «нравится», значение +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']);    
     }  
    } 
} 

Кто-нибудь может сказать, что я делаю не так?

+0

проверить, если это поможет вам http://stackoverflow.com/questions/612034/how-can-i-set-a-cookie-and-then-redirect-in- php – Chinook

+1

http://www.tek-tips.com/viewthread.cfm?qid=1509045 – Chinook

+0

Спасибо, Чинук. он помог – jumancy

ответ

2

use get_cookie ('some_cookie') ИЛИ get_cookie ('some_cookie', TRUE); вместо $ cookie [$ value].

кроме того установить кук для полного домена с помощью

   $cookie = array(
       'name' => 'The Cookie Name', 
       'value' => 'The Value', 
       'expire' => '86500', 
       'domain' => '.some-domain.com', 
       'path' => '/', 

       ); 

       set_cookie($cookie); 
+0

Я уже решил. Проблема была на пути, я добавил путь «/», и он работал правильно. – jumancy

Смежные вопросы