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

标签 php mysql database-design referrals

我已经有一个完全 promise 的成员(member)系统,想整合我自己的用户推荐系统,但需要一些技巧和建议。

我当前的注册用户表是这样的

users (table)
- id (user id)
- email (user email)
- password (hash of users password)
- reg_date (date user registered)

我还有一些其他领域,但与我想做的事情无关,为了让事情尽可能简单,我将它们排除在外。

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

我希望是否有人可以解释我在推荐表中跟踪推荐所需的逻辑?

到目前为止,我的表格如下所示:

referrals (table)
- uid (id of referrer, this would be a registered user from users table)
- ref_count (total the referrer from users table has referred people)
- action (maybe not rite name) (if the person who was referred completed signup)
- I guess some id or something for the person being referred, not sure and what ever else I may need.

显然在注册页面上我会有一个推荐文本框,用户可以输入他们被推荐的人的用户名,并检查他们是否是由已经注册的成员(member)推荐的,我想在推荐电子邮件链接中我会添加用户 who推荐并在注册页面上做一个简单的检查,比如 signup?ref=username_here

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

如您所见,我正在为推荐表背后的逻辑苦苦挣扎,如果有人能解释我还需要什么,我会很高兴吗?以及我需要在 php 中做些什么才能将它们组合在一起(而不是代码)背后的逻辑只是关于我应该做什么的快速粗略指南。我知道我需要做某些检查等检查以确保他们之前没有推荐过他们(出于垃圾邮件原因)并且他们想要推荐的人的电子邮件之前没有被其他人推荐过(出于垃圾邮件原因)并且他们想要推荐的人的电子邮件在用户表等中不存在作为已注册的成员。

也许我让这件事变得比实际更难,但出于某种原因我没有理解它背后的逻辑,如果有人能告诉我我在做什么是完全错误的而不是最好的方法请这样做。

我猜你可能会说我要一个推荐表的模型(草稿)来做我想做的事情以及我应该在 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=>your_email, name=>abuse。它会让你降级。

用于计数。推荐次数:

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

关于php - 使用 PHP 和 MySQL 的用户推荐系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5689207/

相关文章:

php - 有没有办法获取变量的名称? PHP-反射

php - 如何使用 PHP Simple HTML DOM Parser 添加自定义属性

mysql - 在一行中存储对多个表的引用的最佳方式?

Django 和架构 : how to share a "referencial" database between projects?

PHP RSA-公钥base64编码

php - 显示3个表的数据

mysql - 结合 SUM 和 WHERE - 没有得到我期望的结果

mysql - 在 MySQL 中转换日期

MySQL 在一个查询中将多个表中的值插入到一个表中?

数据库内部 : implementation of a foreign key constraint