使用PHP和MySQL的用户推荐系统

3
我已经拥有一个完整的会员系统,想要集成自己的用户推荐系统,但希望得到一些建议和技巧。
我的当前注册用户表如下: users (table) - id (用户id) - email (用户电子邮件) - password (用户密码哈希值) - reg_date (用户注册日期)
我还有其他字段,但与我想做的事情无关,为了尽可能简单,我将它们省略了。
我考虑创建一个名为"referrals"的新表。例如,当来自"users"表中的注册用户推荐某人时(我想我会创建一个表单,要求输入被推荐人的电子邮件和姓名,并将其添加到"referrals"表中),它就会在他们的账户中显示出来,显示他们推荐了谁以及他们推荐了多少人,以及被推荐人是否加入了我的网站。
我希望有人能够解释一下我需要在我的"referrals"表中跟踪推荐的逻辑。
到目前为止,我的表格看起来像这样:
referrals (table) - uid (引荐者的ID,这将是来自"users"表的注册用户) - ref_count (引荐者从"users"表中引荐的总人数) - action (也许不是正确的名称)(如果被引荐的人完成了注册) - 我猜被引荐的人会有一个ID或其他什么东西,我不确定还需要什么。
显然,在注册页面上,我将有一个推荐人文本框,用户可以在其中输入他们被哪个已注册成员推荐的用户名,并检查是否已经被该成员推荐,我想在引荐电子邮件链接中添加制造引荐的用户,并在注册页面上进行简单的检查,例如signup?ref=username_here。
如果通过get设置了"ref",则自动将用户名添加到文本框中。
正如您所看到的,我在推荐表背后的逻辑方面遇到了困难,如果有人能够解释我还需要什么,那就太好了?以及我应该在php中做些什么来把它们整合起来(不是代码),只是一个快速的大致指南,告诉我应该做什么。我知道我需要进行某些检查,例如检查以确保他们之前没有引荐过他们(出于垃圾邮件原因),并且被引荐人的电子邮件之前没有被其他人引荐过(出于垃圾邮件原因),以及被引荐人的电子邮件不存在于用户表中等等。
也许我正在把这件事情弄得比实际上更难,但出于某种原因,我没有理解它的逻辑。如果有人能告诉我我正在完全错误的方向上行进,并且不是最好的方法,请告诉我。
我想你可以说我正在要求一个草图(草稿),以做我想要的事情和我应该在php中做的事情的样子。
2个回答

6

请按照以下方式设置转介表:

referrals:
    id (primary key)
    referrer_id (user who is referring someone else)
    referred_email (email of person being referred)
    status (referred[default], registered)
    created_on
    updated_at

遵循“不信任任何人”的政策,您不应在推荐中使用姓名字段。例如,我发送一个推荐:email=>你的电子邮件,name=>滥用。 这会降低您的信誉。

要计算推荐数量:

select count(*) as referral_count from referrals where referrer_id = 'user_id'

谢谢回复。在我的注册页面上,您建议我如何跟踪是否已通过get方法设置了推荐?因为您建议不要使用用户名作为推荐链接?也许是:signup.php?ref=email_of_referred_person_here?或者我应该创建一个referred_id列,例如随机的md5()哈希,并且对于被推荐的人是唯一的。不确定这个部分最好的方式是什么。谢谢任何回应。phplover - PHPLOVER
1
您可以使用id(主键)来跟踪推荐,例如signup.php?ref=34,并从表中获取电子邮件。 - Ashwini Dhekane

0

我在做同一个模块时发现一个问题。如果用户将推荐链接发送给未经用户推荐的其他人,那么你会怎么建议:

(1) 要么允许那个人注册并向用户付款(因为这可以为网站带来更多用户)。 (2) 允许那个人注册,但不付款。


这可能更适合作为一条注释。 - Donald Duck
我需要16个声望才能发表评论,你想捐赠吗?@DonaldDuck - Dhruvi Mistry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接