2010-05-17 88 views
2

我有一个具有基本社交功能的PHP/CodeIgniter网站,显然包含一个“添加朋友”链接。点击此链接时,AJAX调用将在后台进行,该链接将与链接关联的用户添加为登录用户的好友。此外,链接转换成“删除朋友”,它就像在锡上说的那样,就像“添加朋友”一样。避免“添加朋友”滥用的最佳做法

当点击“添加朋友”时,添加为朋友的用户通过电子邮件通知他或她已添加为朋友。这就是我的问题所在:我想避免用这些通知电子邮件向用户发送垃圾邮件,如果登录用户不断点击添加/删除/添加/删除/等。

我的想法是设置一个添加历史记录表,记录2个用户ID和一个时间戳。如果(当前时间 - 时间戳)大于设定值,我只会发送电子邮件。每次用户重新添加朋友时,我都会将时间戳更新为当前时间,以便“扩展”垃圾邮件控制的可扩展性。通过这种方法,我还可以控制用户是否想在给定的时间间隔内添加太多的朋友。

对于时间戳远离给定值的记录,此表将不时被清除。

这是我的想法,如果你有其他的或使用不同的方法,请分享。

感谢您的阅读。

+0

难道你不在某处存储好友信息吗?如何添加一个属性来告诉你友谊何时开始? – 2010-05-17 09:14:21

+0

当我删除朋友时,我完全删除了数据库记录,这就是为什么我更喜欢使用单独的数据库表来保留历史记录。好用户名,顺便说一句。 :) – janosrusiczki 2010-05-17 14:09:22

回答

3

听起来像我最喜欢的选项。为了简化,如果记录完全存在(而不是基于时间戳),我可能会发送电子邮件,然后设置一个cron系统地处理旧的 - 这样,您可以有更多的控制权超过时间限制(您的“限制”逻辑会进入cron脚本,因此您可以根据比时间戳更复杂的参数决定是否删除记录 - 例如,如果特定用户有大量的活动,以阻止垃圾邮件发送者,你甚至可以是用户或帐户类型特定的,但我确实有倾向于过度......)

据我所知,Facebook有"Add Friend" - >"Pending request"。从那里开始,除非对方回复,否则你无法做任何事情,所以你根本不能垃圾邮件请求,但我想这取决于你是否需要确认另一端,这取决于你自己的口味。

1

我认为最好让你的朋友选项成为一种双向的选择。因此,第一个用户邀请其他人成为他/她的朋友(将“添加朋友”链接变成“受邀”等不是链接的内容)。另一个人则必须接受第一个用户作为朋友。之后,这两个用户可以删除友谊,但在此之后,如果他们中的一个再次决定成为朋友,他可以再次邀请另一个。你可以在这个邀请当然有某种有效期限,或者一些限制(例如,一个人只能邀请其他人三次)...

这样你就不会用电子邮件发送用户邮件(在最起码是因为有些人经常点击一个链接),人们对他们的朋友有更多的控制权。当然,这种方法确实有一些缺点(比如如何处理被忽略的邀请等)。

你在你的问题中描述的方式我认为也是一种打击垃圾邮件的好方法,你也可以做一些事情,例如限制某人可以添加另一个用户作为朋友的次数(即每天一次,三次周,我不知道,类似的东西)..