Ограничить публикацию каждые 30 минут - PullRequest
1 голос
/ 21 июня 2010

Спасибо за внимание.

Я пытаюсь написать скрипт для установки файла cookie после того, как пользователь оставит комментарий, ограничив его повторную публикацию в течение 30 минут. Я так запутался, с чего начать. Пожалуйста, не могли бы вы, ребята, помочь мне с тем, как я это делаю?

Я пытаюсь использовать этот плагин jquery - Таймер обратного отсчета .

Ответы [ 6 ]

12 голосов
/ 21 июня 2010

Не делайте это на стороне клиента (куки, JavaScript, что угодно); это можно легко обойти.

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

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

1 голос
/ 21 июня 2010

Не зная больше о вашем проекте, я бы сделал это примерно так:

  1. Когда пользователь публикует сообщение, сначала проверьте, существует ли ваш файл cookie
  2. Если он не существуетразрешить пользователю публиковать и создавать файл cookie с текущей отметкой времени
  3. Если файл cookie существует, проверьте, не превышает ли отметка времени более 30 минут до текущего времени.
  4. Если время превышает 30 минут, позвольте им опубликовать и сбросить время.
  5. Если нет, дайте им симпатичное сообщение, в котором говорится, что они должны ждать.

Конечно, этоэто не лучший способ, потому что им нужно включить куки, или они могут удалить куки, или еще что-то.Лично я бы справился с этой серверной стороной: а) заставив каждого пользователя создать учетную запись для публикации (что не слишком безумно, если вы беспокоитесь о том, что пользователь публикует сообщения чаще, чем раз в 30 минут), или б) проверкиих IP-адрес.

1 голос
/ 21 июня 2010

Помимо того, как сделать это с cookie, почему вы это делаете?Если вы хотите избежать технически продвинутых спамеров, установка cookie на стороне клиента будет удерживать их примерно на 5 секунд, прежде чем они отключат куки для вашего сайта или иным образом обойдут ваше ограничение.установить cookie с тайм-аутом 30 минут.Если куки существуют, заблокируйте.Если нет, то они могут свободно публиковать сообщения.

0 голосов
/ 21 июня 2010

Использовать сессию

Например, после записи укажите текущее время + 30 минут в строке сеанса $_SESSION['postTimeFlag'] = time() + 1800; Затем, когда пользователь собирается опубликовать, сеанс

if(time()>$_SESSION['postTimeFlag']) { 
   //continue posting
}
0 голосов
/ 21 июня 2010

Почему JQuery?Вы можете сделать это по тел.

Сохранять пользовательские данные в файлах cookie (если он / она является зарегистрированным пользователем, хранить идентификатор, если нет - сохранять IP-адрес) и установить время в 30 минут (или что вы хотите).затем проверьте, если cookie активен, не позволяйте оставлять комментарии.

0 голосов
/ 21 июня 2010

Посмотрите на функцию setcookie () для установки файлов cookie и $ _COOKIE ["mycookie"] для получения значения установленного файла cookie.

Но имейте в виду, что пользователь может просто обойти ваше «решение», удалив cookie.

Более сложным (но лучшим) решением будет внедрение пользовательской системы (с логином и т. Д.) И проверкой времени последнего сообщения в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...