Система рефералов пользователей с использованием PHP и MySQL

У меня уже есть полностью заложенная система членства и я хочу интегрировать свою собственную систему рефералов пользователей, но хочу получить некоторые советы, рекомендации по ее выполнению.

Моя текущая зарегистрированная таблица пользователей – это что-то вроде

пользователи (таблица)
– id (идентификатор пользователя)
– электронная почта (электронная почта пользователя)
– пароль (хэш пароля пользователей)
– reg_date (зарегистрирована дата пользователя)

У меня есть другие поля, но я не имею никакого отношения к тому, что я хочу делать, и чтобы все было как можно проще, я оставил их.

Я думаю о создании новой таблицы, называемой рефералами, и, например, когда кто-то из зарегистрированных пользователей на моем сайте из таблицы пользователей ссылается на кого-то (я думаю, я бы создал форму, которая запрашивает электронную почту человека, которого они хотят передать, и имя и добавляет, что таблица рефералов), то он отображает в нем учетную запись, на которую они ссылаются, и на сколько людей они ссылаются, и если человек, которого они называют, присоединился к моему сайту.

Я надеюсь, что кто-то может объяснить логику того, что мне нужно в моей таблице рефералов, чтобы отслеживать рефералов?

Мой стол выглядит так:

рефералы (таблица)
– uid (идентификатор referrer, это будет зарегистрированный пользователь из таблицы пользователей)
– ref_count (общее количество ссылок от таблицы пользователей направлено людям)
– действие (возможно, не имя обряда) (если лицо, которое было отправлено завершенным регистрационным письмом)
– Я предполагаю, что какой-то идентификатор или что-то для человека, которого вы упомянули, не уверены и что еще мне может понадобиться.

Очевидно, что на странице регистрации у меня будет текстовое поле referrer, в котором пользователь может указать имя пользователя, к которому они были направлены, и проверит, были ли они отправлены уже зарегистрированным членом, и я предполагаю, что в реферальной ссылке электронной почты я бы добавил пользователя, который сделал реферал и сделать простую проверку на странице регистрации что-то вроде регистрации? ref = username_here

и если ref isset через get добавить имя пользователя автоматически в текстовое поле.

Как вы можете видеть, я борюсь с логикой таблицы рефералов и буду любить ее, если кто-нибудь сможет объяснить, что еще мне понадобится? и логику того, что мне нужно будет делать в 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' 

Я нашел один запрос, поскольку я делаю тот же модуль. Если реферальная ссылка отправляется другому лицу, которое не было передано пользователем, то что вы предложите:

(1) Либо разрешить этому человеку регистрироваться и платить пользователю (поскольку это может привлечь больше пользователей на сайт.) (2) Разрешить этому лицу регистрироваться, но не платить.