Лучшая практика, чтобы избежать злоупотребления "добавить друга" - PullRequest
3 голосов
/ 17 мая 2010

У меня есть сайт PHP / CodeIgniter с базовым социальным функционалом, который, очевидно, включает ссылку «Добавить друга». При нажатии на эту ссылку в фоновом режиме выполняется вызов AJAX, который добавляет пользователя, связанного со ссылкой, в качестве друга вошедшего в систему пользователя. Также ссылка преобразуется в «Удалить друга», что делает то же, что и на банке, точно так же, как «Добавить друга».

При нажатии «Добавить друга» пользователь, добавленный в друзья, получает по электронной почте уведомление о том, что он или она были добавлены в друзья. Вот тут и возникает мой вопрос: я хочу избежать спама пользователю с помощью этих уведомлений, если вошедший в систему пользователь продолжает нажимать добавить / удалить / добавить / удалить / и т.д.

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

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

Это моя идея, если у вас есть другие или использовали другие методы, пожалуйста, поделитесь.

Спасибо за чтение.

Ответы [ 2 ]

3 голосов
/ 17 мая 2010

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

Насколько я могу судить, Facebook имеет "Add Friend" -> "Pending request". Оттуда вы ничего не сможете сделать, пока другой человек не ответит, поэтому вы вообще не можете спам-запросы, но я думаю, это зависит от того, требуется ли вам подтверждение на другом конце, и это зависит от ваших собственных вкусов.

1 голос
/ 17 мая 2010

Я думаю, лучше всего, чтобы вы добавили опцию добавления друга в двух направлениях. Таким образом, первый пользователь приглашает кого-то стать его / ее другом (изменяя ссылку «добавить друга» на что-то вроде «приглашено», которая не является ссылкой). Затем другой человек должен принять первого пользователя в друзья. После этого оба пользователя могут удалить дружбу, но после этого, если один из них решит снова стать друзьями, он может пригласить другого снова. Конечно, вы можете указать какой-либо срок действия для этого приглашения или некоторые ограничения (т.е. можно пригласить кого-то еще только три раза) ...

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

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

...