Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru FAQ (все вопросы) Хаки Ограничить количество комментариев в день в определенном разделе

Ограничить количество комментариев в день в определенном разделе


     24.05.2013    Хаки    1468

вопрос
Здравствуйте! Помогите, пожалуйста, решить проблему.

Мне нужно, чтобы каждый пользователь не мог добавлять больше, чем 5 комментариев в день к новостям из определенного раздела. Нашла такой хак:

Открываем modules/addcomments.php
ищем:
if ($comments ==''){
        $stop[] = $lang['news_err_11'];
        $CN_HALT = TRUE;
    }

ниже вставляем:
$limit="10"; # Ставим тут вместо 10 кол-во комментов
$com_num_day=$db->super_query("SELECT COUNT(*)as count FROM ".PREFIX."_comments WHERE autor='$name' AND date LIKE '".date('Y-m-d', time())."%'");
if ($com_num_day['count'] >=$limit){
        $stop[] = "Лимит в {$limit} комментов использован! Вы уже {$com_num_day['count']} нафлудили!";
        $CN_HALT = TRUE;
}

Но такое решение делает ограничение на комментарии во всех разделах. Подскажите, пожалуйста, как применить ограничение во всех подкатегориях только определенного раздела сайта? Очень прошу помочь. Заранее большое спасибо!

Ответил: dj-avtosh


Решено, переписал на стороне у клиента.

Комментарии пользователей (10)

Sander
1126

1637 | 1204

Sander - 24 мая 2013 17:24 - Эксперт

Не стесняйтесь использовать тег
[code]

SanDev.pro - мой блог.

ICQ: 404-037-556
Skype: Sander8804

dj-avtosh
39

1479 | 390

dj-avtosh - 24 мая 2013 20:23 - шашлычник

$com_num_day=$db->super_query("SELECT COUNT(*)as count FROM ".PREFIX."_comments WHERE autor='$name' AND date LIKE '".date('Y-m-d', time())."%'")     

AND category = ?


развлекайтесь...

Логично, если поле category нет у таблицы comments, значит используйте JOIN на таблицу, и таким же темпом.

$com_num_day=$db->super_query("

SELECT COUNT(*)as count

FROM ".PREFIX."_comments с

LEFT JOIN ".PREFIX."_post p ON ( p.id = c.post_id )

WHERE c.autor='$name' AND c.date LIKE '".date('Y-m-d', time())."%'")    

AND p.category = ?


skype: elhan.isaev

Pochemuchka
31 | 27

Pochemuchka - 24 мая 2013 20:40 - Юзер

dj-avtosh , большое спасибо за помощь! Сейчас попробую сделать, как вы подсказали...

Pochemuchka
31 | 27

Pochemuchka - 24 мая 2013 21:28 - Юзер

dj-avtosh, подскажите, пожалуйста, что я не так сделала:

Вставила после строк:
if ($comments ==''){
        $stop[] = $lang['news_err_11'];
        $CN_HALT = TRUE;
    }

вот это:
$limit="5"; # Ставим тут вместо 10 кол-во комментов
$com_num_day=$db->super_query("

SELECT COUNT(*)as count

FROM ".PREFIX."_comments с

LEFT JOIN ".PREFIX."_post p ON ( p.id = c.post_id )

WHERE c.autor='$name' AND c.date LIKE '".date('Y-m-d', time())."%'")    

AND p.category = 47
if ($com_num_day['count'] >=$limit){
        $stop[] = "Лимит в {$limit} комментов использован! Вы уже {$com_num_day['count']} нафлудили!";
        $CN_HALT = TRUE;
}

47 - ID раздела, в подкатегориях которого нужно сделать ограничения.
Теперь при попытке добавить комментарий выдает такую ошибку:
"Parse error: syntax error, unexpected '=' in Z:\home\site.ru\www\engine\modules\addcomments.php on line 186".
Строка 186 - вот эта: "AND p.category = 47".
Помогите еще раз, пожалуйста...

dj-avtosh
39

1479 | 390

dj-avtosh - 24 мая 2013 21:34 - шашлычник

AND p.category = 47


после

'".date('Y-m-d', time())."%'

skype: elhan.isaev

dj-avtosh
39

1479 | 390

dj-avtosh - 24 мая 2013 21:36 - шашлычник

и после скобочки забыли точку с запятой

skype: elhan.isaev

dj-avtosh
39

1479 | 390

dj-avtosh - 24 мая 2013 21:37 - шашлычник

$limit="5"; # Ставим тут вместо 10 кол-во комментов
$com_num_day=$db->super_query("

SELECT COUNT(*) as count

FROM ".PREFIX."_comments с

LEFT JOIN ".PREFIX."_post p ON ( p.id = c.post_id )

WHERE c.autor='".$name."' AND c.date LIKE '".date('Y-m-d', time())."%' AND p.category = 47 ");    


if ($com_num_day['count'] >=$limit){
        $stop[] = "Лимит в {$limit} комментов использован! Вы уже {$com_num_day['count']} нафлудили!";
        $CN_HALT = TRUE;
}

skype: elhan.isaev

Pochemuchka
31 | 27

Pochemuchka - 24 мая 2013 21:47 - Юзер

dj-avtosh , огромное спасибо, что тратите время на такую ламершу как я)).

Сделала по новой вот так:

$limit="5"; # Ставим тут вместо 10 кол-во комментов
$com_num_day=$db->super_query("

SELECT COUNT(*)as count

FROM ".PREFIX."_comments с

LEFT JOIN ".PREFIX."_post p ON ( p.id = c.post_id )

WHERE c.autor='$name' AND c.date LIKE '".date('Y-m-d', time())."%'AND p.category = 47");    


if ($com_num_day['count'] >=$limit){
        $stop[] = "Лимит в {$limit} комментов использован! Вы уже {$com_num_day['count']} нафлудили!";
        $CN_HALT = TRUE;
}


Теперь выдает ошибку мускула: "MySQL Error!
------------------------

The Error returned was:
Unknown column 'c.autor' in 'where clause'

Error Number:
1054

SELECT COUNT(*)as count

FROM dle_comments
LEFT JOIN dle_post p ON ( p.id = c.post_id )

WHERE c.autor='test' AND c.date LIKE '2013-05-24%'AND p.category = 47".

Опять что-то сделала не так... Очень прошу, если вам не трудно, не могли бы вы привести весь код полностью? А то чувствую, что снова что-нибудь напутаю...

dj-avtosh
39

1479 | 390

dj-avtosh - 25 мая 2013 13:03 - шашлычник

Елена, после comments через пробел не хватает c
И, желательно, COUNT(*) заменить на COUNT(c.`id`)

skype: elhan.isaev

Pochemuchka
31 | 27

Pochemuchka - 25 мая 2013 16:20 - Юзер

dj-avtosh, безгранично признательна Вам за помощь! Все работает безупречно, огромное спасибо тысячу раз!!

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

 10.10.2012 lexa21reg  Хаки