Система рефералов пользователей с использованием PHP и MySQL
У меня уже есть полноценная система членства, и я хочу интегрировать свою собственную систему рефералов пользователей, но мне нужны некоторые советы, советы по этому вопросу.
Моя таблица текущих зарегистрированных пользователей похожа на
пользователи (таблица)
- id (идентификатор пользователя)
- электронная почта (электронная почта пользователя)
- пароль (хэш пароля пользователя)
- reg_date (дата регистрации пользователя)
У меня есть некоторые другие поля, но они не имеют отношения к тому, что я хочу сделать, и чтобы все было как можно проще, я их пропустил
Я подумываю о создании новой таблицы, называемой рефералами, и, например, когда зарегистрированный пользователь на моем сайте из таблицы пользователей ссылается на кого-то (думаю, я бы создал форму, которая запрашивает адрес электронной почты человека, на которого он хочет сослаться, и его имя, и добавляет его к таблица рефералов) в нем отображается учетная запись, на которую они ссылались, и сколько людей они указали и присоединился ли человек, на которого они ссылались, к моему сайту.
Я надеюсь, что кто-то может объяснить логику того, что мне нужно в моей таблице рефералов для отслеживания рефералов?
Моя таблица пока выглядит так:
рефералы (таблица)
- uid (идентификатор реферера, это будет зарегистрированный пользователь из таблицы пользователей)
- ref_count (всего реферер из таблицы пользователей перевел людей)
- действие (возможно, не название ритуала) (если лицо, на которое было направлено письмо, завершило регистрацию)
- Я предполагаю, что какой-то идентификатор или что-то для человека, которого направляют, не уверен, и что еще мне может понадобиться.
Очевидно, что на странице регистрации у меня будет текстовое поле для реферера, в котором пользователь может вводить имя пользователя, на которого он ссылался, и проверять, ссылался ли он на уже зарегистрированного участника, и я думаю, что по реферальной ссылке я бы добавил пользователя, который сделал реферал и сделать простую проверку на странице регистрации что-то вроде регистрации? ref = username_here
и если ref isset через get, добавьте имя пользователя автоматически в текстовое поле.
Как вы видите, я борюсь с логикой за таблицей рефералов и хотел бы, чтобы кто-нибудь объяснил, что еще мне нужно? и логика того, что мне нужно будет делать в php, чтобы собрать все вместе (не код), просто краткое грубое руководство о том, что я должен делать. Я знаю, что мне нужно будет выполнить определенные проверки и т. Д., Например, проверку, чтобы убедиться, что они не передали их ранее (по причинам спама) и что электронная почта лица, на которое они хотят сослаться, ранее не была передана кем-либо еще (по причинам спама) и что адрес электронной почты человека, на которого он хочет сослаться, не существует как уже зарегистрированный участник в таблице пользователей и т. д.
Может быть, я делаю это сложнее, чем на самом деле, но по какой-то причине у меня нет логики, если кто-то может сказать мне, что то, что я делаю, совершенно неправильно, и не лучший способ сделать это, пожалуйста,
Я думаю, вы могли бы сказать, что я прошу макет (черновик) таблицы рефералов, чтобы делать то, что я хочу, и то, что я должен делать в php, чтобы собрать все это вместе.
2 ответа
Установите реферальную таблицу следующим образом:
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=>злоупотребление. Это понижает тебя.
Для подсчета нет. рефералов:
select count(*) as referral_count from referrals where referrer_id = 'user_id'
Я нашел один запрос на это, поскольку я делаю тот же модуль. Если реферальная ссылка отправлена другому лицу, на которое пользователь не ссылался, то что вы посоветуете:
(1) Либо разрешите этому человеку зарегистрироваться и заплатить пользователю (так как это может привлечь больше пользователей на сайт.) (2) Разрешить этому человеку зарегистрироваться, но не платить.