Ограничение активности через PHP - PullRequest
0 голосов
/ 30 ноября 2011

У меня есть социальная сеть, которая позволяет пользователям публиковать блоги, задавать вопросы и сообщения. У нас была небольшая проблема со спамом. Например, у нас есть пользователи, которые регистрируются и пишут около 6 блогов в минуту, пытаясь продать что-либо.

Я ищу быстрый способ ограничить эти действия идентификатором пользователя, скажем, разрешить им публиковать только 3 блога в день.

У меня есть пользователи, которые хранятся в переменной $auth и через ООП выводят их, например, на $auth->id, чтобы быть более конкретными.

Ищете быстрый и простой способ сделать это через php.

спасибо заранее / ** РЕДАКТИРОВАТЬ ***** /

это то, что у меня есть до сих пор, и я точно знаю, что $ слишком много считает, как и должно, но по какой-то причине мой if(statement не мешает публикации четвертого блога. ЗДЕСЬ это код

Ответы [ 4 ]

3 голосов
/ 30 ноября 2011

Что-то вроде CAPTCHA будет уместным.Однако, если они вводятся вручную, они мало что сделают, чтобы остановить их.В любом случае, нет причин, по которым вы не можете реализовать оба метода.

Я предполагаю, что у вас есть поле created в таблице блогов.Просто запросите в таблице количество блогов с сегодняшней датой, прежде чем разрешить публикацию другого.Не уверен, какую базу данных / API вы используете.В MySQL вы можете сделать:

SELECT COUNT(*) 
FROM blogs 
WHERE user_id = USERID 
AND DATE(created) = '2011-11-30'
2 голосов
/ 30 ноября 2011

Когда пользователь пишет и отправляет сообщение, сохраните дату, которую он опубликовал в таблице сообщения.Выберите и посчитайте количество раз, которое они опубликовали сегодня.Если они не достигли своего предела, разрешите пост или же дайте им сообщение об ошибке / предупреждение.

1 голос
/ 30 ноября 2011

Я признаю, что почти ничего не знаю о программировании на PHP, но другой вариант (или дополнение к CAPTCHA) будет использовать такой сервис, как StopForumSpam

Вот пример как его использовать здесь (понятия не имею, насколько он хорош, поскольку я не пишу код PHP (пока)):)

1 голос
/ 30 ноября 2011

Когда сообщение сделано, сделайте что-то вроде:

// Get last post time and number of posts today from database
$query = "SELECT
            last_post,
            posts_today
          FROM
            users
          WHERE
            id = '$auth->id'";
$result = mysql_fetch_assoc(mysql_query($query));

// See if this is the first post today
$isNewDay = date('Y-m-d') != date('Y-m-d',strtotime($result['last_post']));
$postsToday = ($isNewDay) ? 0 : (int) $result['posts_today'];

// Only add post if user is allowed
if ($isNewDay || $postsToday < 3) {
  /*
    Add the post to the database here
  */
  // Update the number of posts today in the database
  $query = "UPDATE
              users
            SET
              last_post = '".date('Y-m-d H:i:s')."',
              posts_today = '".($postsToday + 1)."'
            WHERE
              id = '$auth->id'";
  mysql_query($query);
} else {
  echo "You have already made 3 posts today!";
}

... или вы можете просто использовать CAPTCHA (как упоминалось другими). Вот для чего они. Действительно, у вас должен быть один в процессе регистрации ...

...