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

使用PHP和MySQL的用户推荐系统,php,mysql,database-design,referrals,Php,Mysql,Database Design,Referrals,我已经有了一个完全承诺的会员系统,并希望整合我自己的用户推荐系统,但希望得到一些提示和建议 我的当前注册用户表类似于 用户(表) -id(用户id) -电子邮件(用户电子邮件) -密码(用户密码的散列) -注册日期(用户注册日期) 我还有一些其他的领域,但与我想做的事情无关,为了让事情尽可能简单,我忽略了它们 我正在考虑创建一个名为推荐的新表,例如,当我网站上的注册用户从用户表中推荐某人时(我想我会创建一个表单,要求提供他们想要推荐的人的电子邮件及其姓名,并将其添加到推荐表中)然后,它会在那个账

我已经有了一个完全承诺的会员系统,并希望整合我自己的用户推荐系统,但希望得到一些提示和建议

我的当前注册用户表类似于

用户(表)
-id(用户id)
-电子邮件(用户电子邮件)
-密码(用户密码的散列)
-注册日期(用户注册日期)

我还有一些其他的领域,但与我想做的事情无关,为了让事情尽可能简单,我忽略了它们

我正在考虑创建一个名为推荐的新表,例如,当我网站上的注册用户从用户表中推荐某人时(我想我会创建一个表单,要求提供他们想要推荐的人的电子邮件及其姓名,并将其添加到推荐表中)然后,它会在那个账户中显示他们推荐了谁,推荐了多少人,以及他们推荐的人是否加入了我的网站

我希望有人能解释一下我需要什么样的推荐表来跟踪推荐

到目前为止,我的桌子如下所示:

推荐(表格)
-uid(推荐人的id,这将是用户表中的注册用户)
-ref_count(用户表中的推荐人已推荐人的总数)
-行动(可能不是仪式名称)(如果被推荐人已完成注册)
-我想我应该给被推荐人一些身份证,不确定我还需要什么

显然,在注册页面上,我会有一个推荐人文本框,用户可以输入他们被推荐的用户名,并检查他们是否被已经注册的会员推荐,我猜在推荐电子邮件链接中,我会添加进行推荐的用户,并在注册页面上做一个简单的检查,比如注册?ref=username\u

如果ref是通过get设置的,则自动将用户名添加到文本框中

正如你所看到的,我正在努力解决推荐表背后的逻辑问题,如果有人能解释我还需要什么,我会很高兴的?我在php中需要做的事情背后的逻辑(不是代码)只是一个关于我应该做什么的快速粗略指南。我知道我需要做一些检查,比如检查,以确保他们以前没有引用过他们(出于垃圾邮件原因),并且他们想引用的人的电子邮件以前没有被其他人引用过(出于垃圾邮件原因)并且他们想要引用的人的电子邮件在users表等中不作为已注册成员存在

也许我让这件事变得比实际情况更难,但出于某种原因,我不明白背后的逻辑,如果有人能告诉我我所做的是完全错误的,并且不是最好的解决方法,请你去做


我想你可能会说,我要求提供一个参考表格的模型(草稿),以完成我想要做的事情,以及我应该在php中完成的那种事情,从而将所有这些结合起来。

如下设置参考表格:

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'

我在制作同一个模块时发现了一个问题。如果将转介链接发送给用户未转介的其他人,则您有何建议:

(1) 或者允许该用户注册并向用户付费(因为这样可以让更多用户访问该站点。)
(2) 允许此人注册,但不付款。

谢谢回复。在我的注册页面上,您建议我如何跟踪是否按照您建议的不使用用户名作为推荐链接,通过get方法设置了推荐?也许:signup.php?ref=此处引用的人的电子邮件?或者我应该创建一个refered_id列,它可以是一个随机的md5()散列,并且对于被引用的人来说是唯一的。我不知道这一点最好的方法是什么。谢谢你的回复。phpOver您可以使用id(主键)跟踪signup.php?ref=34这样的推荐,并从表中获取电子邮件。这可能更适合作为评论。我还需要16个声誉来评论,您愿意捐款吗@唐老鸭