2011-06-25 118 views
3

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

有谁建立转诊制度之前,如果是这样,我应该记住什么障碍?今晚我已经有了一个窥探,但找不到合适的答案。

我的理论是给每个用户被生成并存储在一个数据库中的随机字符串用户注册时,用户将然后用URL含呈现。该字符串在传递给某个用户(用户Z)时,然后将用户Z发送到一个页面,然后该页面使用GET方法收集随机字符串并更新他们当前占用的数据库行,该声音是否可行或是否可行容易被破坏?

感谢

回答

3

通常这被称为联盟计划。在描述中,你几乎可以正确使用它,但是我还会将$ _GET var中的引用存储到会话或cookie中,这样即使用户从引用页面导航,也可以记入用户。 通过这个我的意思是 - 通常只有当用户Y注册或购买东西时,联盟计划才会对用户X进行信用。因此,用户Y可以访问推荐页面,然后环顾四周,然后找到返回注册页面或购买页面的路。到那时,引用$ _GET var会丢失,信用也会丢失。因此,您的推介页面会存储推介代码的会话或cookie,并且您的注册页面或结账回调会检查这些变量并采取相应措施。 我相信如果像他提到的那样担心斯科特的方法是好的,但是或者您可能希望转诊始终保持静态,以供人们可能放在名片上的商业转介等情况。他们在传销中做了很多事情,代表在中央公司网站上给予代理人简介,所以他们不需要自己做。

我不知道你的意思是更新他们当前占用的数据库行。你是否建议像计数字段那样保存代表总推介的数字?如果是这样,我会说这不是一个好主意。您应该将每个成功的引荐记录作为其引用者ID作为公用密钥的关系表中的自己条目。这样,您可以将各种发布数据存储在推介中,以便了解您是否被混淆。就像一个用户创建1000个雅虎帐户并注册自己的推荐代码,以获得奖励积分。你的关系表可能会看到重复的IP地址,或者推荐电子邮件是增量式的([email protected][email protected]等),然后你知道采取行动。

您的建议的安全性最终取决于您如何处理数据。如果你盲目地插入任何数据库,那么一切都是有害的。只要确保正确地逃避事情并留意行为,即使是手动操作。你应该没问题。

1

如果该值保持不变,它最肯定可以突破。我建议你不要给用户一个散列(我们会说MD5来简化它),并保持它们唯一的字符串。您可以创建一个临时表,其中包含所有发送的请求的记录,包括用户的ID和当前时间的随机散列(使用类似date()函数的内容)以及用户的PRIMARY KEY值个别要求。所以转介被在午夜发出的,您可以使用下面的命令

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

如果你每次都使用相同的散列,生成MySQL中的唯一的哈希只要有人发现,哈希,除非妥善要防范可能被利用比为每个单独的推荐使用不同的散列容易得多。

1

而不是随机字符串,你可以使用用户X的用户名?
此外,随机字符串,你可以在两个用户具有相同的随机字符串的情况下获得。或者,也许你正在使用两者?

我不知道,我可以看到需要确保转诊,你有什么害怕被滥用?使用多个帐户获得免费积分的用户?他们可以用随机字符串来做到这一点,如果你想防止这种情况发生,你应该设置一个cookie和/或检查IP地址。

什么危险,我们谈论的,如果有人违反制度?只是免费的积分或者是人们通常为这些积分付费?如果是这样,用户付费注册?

如果用户正在成为其中一员,我看不出有任何理由限制推介?在用户Y实际付款之前,不要奖励用户X。当用户Y被称为设置cookie /会话,如果用户Y在会话保持用户X的用户名,获奖用户X.

这是所有我可以和你贴个大气压的信息说登记。

+1

信用在网站上购买一次,所以我唯一的担心是人为了获得更多的信用伪造账户,因此信用的价值大大降低,感谢您的答复! – Liam