如何在社交网络上实现一个可以让不同人获得 5 次奖励的链接?

Posted

技术标签:

【中文标题】如何在社交网络上实现一个可以让不同人获得 5 次奖励的链接?【英文标题】:How to implement a link that can get bonus for 5 times by different people on a Social Network? 【发布时间】:2010-04-25 16:02:18 【问题描述】:

Facebook 上的一些社交游戏允许用户发布指向他们的 Feed 的链接,说“点击这里获得奖金金币 - 仅限前 5 人”。

我们如何生成这样的链接?

任何人都不应轻易“生成”链接作为作弊方法。

另外,应该添加哪些数据库表来处理:

1) 奖金最多可申领 5 次 2)必须由不同的人声称

(每个人在 Facebook 等社交网络平台上都有一个唯一的数字 ID)

?

更新:我想的方法是在 Prize 表中获取下一个主 ID(一个整数索引),并使用一些密钥对其进行 md5 以获得“奖品代码”,并确保它不在“PrizeClaimed”表中——如果已经存在,只需使用下一个主 ID(通过添加记录并重新计算 md5 直到找到唯一的)。这个 PrizeClaim 表是 Prize_code 和 user_id 的联结表,所以一个人可以领奖,一个人可以领多个奖。如果当一个人点击链接时,我们将prize_code和user_id的记录添加到表中——但前提是匹配prize_code获得的记录数为4或更少。如果已经有 5 个,那么只需报告“为时已晚——所有人都声称”。不知道这个方法是怎么实现的,有什么漏洞,改进,或者其他方法实现吗?

(比如 Prize 表只是一个获取 ID 的表,它没有存储任何其他内容。也许我们可以使用当前时间戳加上微秒加一个随机数来做 md5,如果 Prize_code 已经存在,则只需再重复一遍。在这种情况下,我们可以忘记奖品表。)

【问题讨论】:

请不要被冒犯,但是……像你这样一个“点数”多的人怎么会问出这样一个微不足道的问题呢?我只是好奇。 【参考方案1】:

您创建了一个具有当前有效哈希值的表,以及可以声明的最大计数,以及另一个表,您可以在其中保护已单击链接的所有 id。通过它您可以检查链接是否仍有点击,并且只有不同的人点击了它。

【讨论】:

以上是关于如何在社交网络上实现一个可以让不同人获得 5 次奖励的链接?的主要内容,如果未能解决你的问题,请参考以下文章

在aws上实现不同区域的vpc对等链接

如何使用具有不同分片数量的索引在 ElasticSearch 上实现负载的均匀分布?

在 Facebook Web App 上实现聊天

社交网络

社交网站的数据库设计

python多线程代码相同,在不同电脑上实现不了