2013-04-29 2 views
-1

Я сделал раздел комментариев для своего проекта. Но у меня нет какой-то «безопасности», я думаю?PHP: установите продолжительность перед повторным комментарием

1) Я могу прокомментировать столько, сколько захочу.
2) Похожие комментарии не отключены.

Мне интересно, есть ли такая вещь в PHP.

ответ

-1

Вам необходимо реализовать такую ​​вещь самостоятельно. Вы можете использовать для этого сеансы PHP.

+0

Почему -1? При всей этой информации в вопросе это правильный ответ. – Lasse

+0

Я не делал нисходящего. Но это не ответ, это должен быть комментарий. И у вас есть такая репутация, чтобы поставить комментарий. –

+0

Вопрос был, цитируя: «Мне интересно, есть ли такая вещь в PHP». – Lasse

1

Вы должны сохранять комментарии в базе данных. Если строки areduplicate, Вы можете добавить уникальный индекс, как это

ALTER IGNORE TABLE comments ADD UNIQUE INDEX comment_name (id, name); 
+0

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

+0

Другой способ может настроить работу cron против таблицы, чтобы проверить дубликат и отключить их, если они есть :) –

1

1) Если у вас есть значение даты/времени, сохраненные в базе данных можно проверить, если время «когда ваш последний комментарий был» и фактическое когда пользователь попытается добавить новый комментарий.

Но если вы хотите добавить эту проверку в презентацию, вы можете временно скрыть/отключить раздел и показать/включить этот раздел.

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

Я думаю, что когда вы делаете первую проверку (если, например, время составляет 5 секунд), и право комментировать снова, то вы проверяете, является ли комментарий одинаковым.

0

Для вашего кода, обрабатывающего комментарий и вставляющего его в базу данных, вы должны добавить проверки: (a) посмотреть, прокомментировал ли тот же самый человек за последние X минут, или (b) посмотреть, есть ли аналогичный комментарий.

(a) довольно легко реализовать. Я предполагаю, что вы храните комментарии в своей базе данных со столбцом для user_id и столбцом для timestamp. Тогда вы можете просто выполнить запрос, чтобы увидеть, если этот пользователь уже оставил комментарий в срок (давайте установим его на две минуты для этого примера.)

SELECT * FROM `comments` WHERE `user_id`='{$user_id}' AND DATE_SUB(NOW(), INTERVAL 2 MINUTE) < `timestamp` 

Если запустить этот запрос и возвращает строку, то вы знаете, что пользователь оставил комментарий менее двух минут назад.


(б) является более трудным, если ничего другого, чем то, что вы на самом деле не определить, что это значит для комментария, чтобы быть «похож». Вы можете проверить сходство в тексте либо с ключевыми словами, либо с помощью функции сравнения строк, такой как Levenshtein. Вы должны следовать той же логике, что и в (a), просто запустите запрос базы данных, чтобы проверить сходство, и при необходимости сообщите об ошибке.

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

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

+0

Спасибо, jraede, ваше объяснение дало мне картину \ o –

Смежные вопросы