Регистрация, которая требует активации по электронной почте - PullRequest
0 голосов
/ 05 января 2011
CREATE TABLE Member
(
    memberID    int IDENTITY (2480,39) PRIMARY KEY,
    memberName  nvarchar(70) NOT NULL,
    password    nvarchar(30) NOT NULL,
    eMail       nvarchar(100) NOT NULL,
    notify      bit NOT NULL,
    isActive    bit NOT NULL,
    lastLogin   datetime DEFAULT GetDate(),
    dateCreated datetime DEFAULT GetDate() NOT NULL
);

После того, как пользователь заполнит регистрационную форму, которая состоит из:

memberName, пароль, адрес электронной почты и отметьте / снимите флажок уведомлений, затем нажмите «Отправить». Значения будут сохранены в таблице выше с isActive равно False.

Электронное письмо будет отправлено пользователю для активации, после активации isActive будет равно true.

1. Как я могу отправить ссылку активации на электронную почту и затем изменить isActive на True после щелчка по ссылке? Я пытался решить это, я просто еще не понял. Можете ли вы помочь, пожалуйста.

2. Должен ли я добавить новый столбец / изменить схему для выполнения шага 1. Если это так, пожалуйста, сообщите.

Ответы [ 3 ]

3 голосов
/ 05 января 2011

Один простой способ - это ввести код активации GUID в эту таблицу и включить этот код активации в электронное письмо (либо в качестве параметра строки запроса в ссылке, либо попросить пользователя скопировать / вставить, когда они попадут на сайт) .

Когда этот GUID публикуется, вы знаете, что электронное письмо было получено, и вы можете активировать пользователя.

1 голос
/ 05 января 2011

По сути, мы не хотим добавлять поля в таблицу, которые используются только один раз, поэтому мы будем повторно использовать уже имеющиеся поля.

Несколько лет назад я создал систему активации, где создал "guid".msgstr "ключ для ввода в поле пароля (для сохранения номеров полей в базе данных).Я создал ключ, связав несколько случайных чисел, дату и время.Обычный ключ GUID также должен помочь.

При создании новой учетной записи поле LastLogin будет пустым (NULL), поскольку пользователь еще не вошел в систему.Я использовал это, чтобы указать, что поле пароля содержит ключ вместо пароля.

Письмо, которое было отправлено, содержало ссылку на страницу подтверждения, где пользователь должен был установить новый пароль, поэтому перезаписал "ключ "и логин (установка последней даты).Правильный аккаунт для обновления, конечно же, был найден с ключом в почтовой ссылке, совпадающим с ключом в поле пароля.

<a href="www.MyDomain.com/confirm.php?key=65351368571357316687341763">Confirm</a>

Чтобы еще больше оживить его, я использовал CreateDate, чтобы убедиться, что ссылка для регистрациине истек.Если пользователь попытался использовать ссылку через 48 часов после даты создания, срок действия учетной записи истек.Я мог бы использовать дату и время в ключе, чтобы проверить это, но тогда пользователь потенциально мог бы ввести другую дату и время.

0 голосов
/ 05 января 2011

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

Я бы взял 2 или 3 поля - memberID, dateCreated и, возможно, eMail и связал бы их вместе со случайным секретным ключом и использовал бы алгоритм шифрования, такой как RSA или 3DES, чтобы зашифровать всю строку и передать ее в качестве параметра в ссылка, которую вы включаете в письмо активации. Ссылка должна указывать на ваш серверный скрипт, который будет аутентифицировать любого, кто передает действительную зашифрованную строку активации.

Сценарий должен дешифровать переданную строку, а затем проанализировать memberID и секретный ключ, а также любые другие поля, которые вы включаете (например, dateCreated, eMail), и использовать эти данные для определения действительного пользователя. Затем просто установите isActive = 1 для вашего пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...