推荐系统PHP

时间:2011-06-25 00:25:00

标签: php mysql

我有一个会员制网站,我正计划实施推荐系统。 我的网站是基于信用的,其想法是如果用户X引用用户Y,则用户X获得100个奖励积分。

之前是否有人建立了推荐系统?如果有,我应该记住哪些障碍?我今晚有一个窥探,但找不到合适的答案。

我的理论是给每个用户一个随机字符串,当他们注册时生成并存储在数据库中,然后会向用户显示一个URL。那个字符串,当它们传递给某人(用户Z)时,用户Z然后被发送到一个页面,然后页面使用GET方法收集随机字符串并更新他们当前占用的数据库行,这听起来是否可行或者是否可以容易被破坏?

谢谢

3 个答案:

答案 0 :(得分:3)

通常这称为联盟计划。你在描述中几乎完全正确,但我也会将$ _GET var中的引用存储到会话或cookie中,这样即使用户离开引用页面也可以记入用户。 我的意思是 - 通常联盟计划仅在用户Y注册或购买东西时才归功于用户X.因此,用户Y可以点击推荐页面,然后环顾四周,然后找到返回注册页面或购买页面的方式。到那时,推荐$ _GET var已经丢失,信用也是如此。因此,您的推荐页面将存储推荐代码的会话或cookie,您的注册页面或结账回调将检查这些变量并相应地采取行动。 我相信scott的方法很好,如果有他提到的问题,但另外你可能希望推荐一直保持静态,例如人们可能会把名片放在商业卡片上。他们在MLM中做了很多,其中代表在中央公司网站上获得了个人资料,因此他们不需要自己制作。

我不知道你更新他们目前占用的数据库行是什么意思。您是否建议使用包含代表总推荐数的数字的计数字段?如果是这样,我会说这不是一个好主意。您应该将每个成功的引用记录为关系表中的自己的条目,并将引用者的ID作为公共密钥。这样你就可以在推荐中存储各种帖子数据,这样你就可以知道你是否被搞砸了。例如,用户制作1,000个雅虎帐户并注册自己的推荐代码只是为了获得奖励积分。您的关系表可能会看到重复的IP地址,或推荐电子邮件是增量的(johndoe1000 @ yahoo.com,johndoe1001 @yahoo.com等),然后您就知道要采取行动了。

您的建议的安全性最终取决于您如何处理数据。如果你盲目地将任何东西插入数据库,那么一切都是有害的。只需手动确保正确地逃避事情并密切注意行为。你应该没事。

答案 1 :(得分:1)

如果值仍然是静态的,那么肯定会被破坏。我建议你不要给用户一个哈希(我们会说MD5使这个简单)并且仍然是他们唯一的字符串。您可以创建一个临时表,其中包含所有已发送请求的记录,包括用户的ID,以及当前时间的随机哈希值(使用类似date()函数)以及附加到末尾的用户的PRIMARY KEY值个人要求。因此,推荐在午夜发送,您可以使用以下命令在mysql中生成唯一的哈希

SELECT MD5( CONCAT( NOW(),user.id ) ) AS hash FROM user WHERE user.id = #

如果你每次使用相同的哈希值,只要有人发现该哈希值,除非进行适当的防御,否则可能比为每个引用提供不同的哈希要容易得多。

答案 2 :(得分:1)

您可以只使用用户X的用户名而不是随机字符串吗? 此外,对于随机字符串,您可能会遇到两个用户具有相同随机字符串的情况。或者你可能正在计划使用它们?

我不确定我是否能看到确保推荐的必要性,你害怕被滥用?一个用户创建多个帐户以获得免费积分?他们也可以使用随机字符串,如果你想防止这种情况,你应该设置一个cookie和/或检查IP地址。

如果有人违反了系统,我们会谈论什么危险?只是免费免费积分还是人们实际上正在为这些积分付费?如果是这样,用户付费注册?

如果用户付费成为会员,我认为没有理由限制推荐?在用户Y实际支付之前,不要向用户X授予任何奖励。在引用用户Y时设置cookie /会话,如果用户Y在会话持有用户X的用户名时注册,则授予用户X.

对于您发布的信息,我只能说。