Просмотры Обьявлений

увеличение просмотров

#1 14 апреля 2013 в 10:19
Привет всему сообществу!
В разделах Доски, можно сделать вывод объявлений по просмотрам, оказывается заинтересованному лицу объявления не стоит большого труда "накрутить" количество просмотров…
Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст
.

Возможно тема не новая, но я не смог отыскать похожую..
если уже есть готовое решение прошу просто направить…
Спасибо!
#2 14 апреля 2013 в 15:12
мне такое не попадалось.
Первое что думается это поставить условие на счетчик по сессии пользователя.
#3 14 апреля 2013 в 15:32
много заинтересованных?
#4 14 апреля 2013 в 15:52
Если в кратце то в модель вынесите такую функцию и вызывайте в контроллере — если счетчик был увеличен то она вернет 1, если нет то 0. blockTime — время блокировки от накрутки в секундах:
  1.  
  2. public function incViewUnit($id, $blockTime = 10)
  3. {
  4. $time = time();
  5. $checkview = $_SESSION['advt']['views'];
  6. if ($checkview){ // если данные о сессии есть
  7.  
  8. $newcheck = array();
  9. $result = 0;
  10. foreach ($checkview as $key => $value){
  11.  
  12. if ($value > $time){ $newcheck[$key] = $value; }
  13. if ($key == $id and $value > time() ){$result = 1;}
  14.  
  15. }
  16. if (!$newcheck[$id]){
  17. $newcheck[$id] = $time + $blockTime;
  18. $this->where = '`id` = '.$id;
  19. $this->increment(НАЗВАНИЕ ТАБЛИЦЫ, НАЗВАНИЕ ПОЛЯ);
  20.  
  21. $result = 0;
  22. }
  23. $_SESSION['advt']['views'] = $newcheck;
  24.  
  25. } else { // если данных о сессии еще не было
  26. $_SESSION['advt']['views'][$id] = $time + $blockTime;
  27. $this->where = '`id` = '.$id;
  28. $this->increment(НАЗВАНИЕ ТАБЛИЦЫ, НАЗВАНИЕ ПОЛЯ);
  29. $result = 0;
  30. }
  31.  
  32. return $result;
  33.  
  34. }
  35.  
замените в коде на свои значения
  1. $this->increment(НАЗВАНИЕ ТАБЛИЦЫ, НАЗВАНИЕ ПОЛЯ);
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.