Анти-флуд в форуме - PullRequest
       18

Анти-флуд в форуме

0 голосов
/ 12 сентября 2011

Я создаю форум программного обеспечения. Теперь я хочу добавить защиту от наводнений. Поэтому, когда сообщение публикуется, в таблицу помещается date("j-n-Y H:i:s"). Теперь я хочу максимум 4 сообщения в минуту или 15 секунд между каждым сообщением. Каков наилучший способ проверить это?

1 Ответ

2 голосов
/ 12 сентября 2011

Вы можете получить время 15 секунд назад с помощью

$time = date( 'Y-m-d H:i:s', time() - 15 );

Затем найдите количество сообщений, сделанных этим пользователем за это время. Если количество больше 0, откажитесь от поста.

SELECT COUNT(*) FROM posts WHERE user_id = $userId AND posted >= '$time'

Если вы предпочитаете правило 4 сообщения в минуту, сделайте то же самое, но с 60 секундами и откажитесь, если счет больше 4.

$time = date( 'Y-m-d H:i:s', time() - 60 );

SELECT COUNT(*) FROM posts WHERE user_id = $userId AND posted >= '$time'
...