Генерация кода подтверждения для электронного письма с подтверждением

Используя PHP, что некоторые пути состоят в том, чтобы генерировать случайный код подтверждения, который может храниться в DB и использоваться для электронного письма с подтверждением? Я не могу ни за что в жизни думать о способе генерировать уникальное число, которое может быть сгенерировано от профиля пользователя. Тем путем я могу использовать функцию для создания числа достаточно маленьким, чтобы быть включенным в URL (см. эту ссылку). Помните, пользователь должен нажать на ссылку для "подтверждения/активирования" его учетной записи. Если я не могу использовать числа, у меня нет проблем с помощью и букв и чисел.

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

34
задан John Conde 22 June 2012 в 13:01
поделиться

2 ответа

Это может быть хорошая идея проверить , а также поток ошибок процесса .

-121--4223085-
$random_hash = md5(uniqid(rand(), true));

, которые будут длинные и уникальные 32 буквенно-цифровых символов. Если вы хотите, чтобы это было короче, просто используйте Substr ():

$random_hash = substr(md5(uniqid(rand(), true)), 16, 16); // 16 characters long

Альтернативные методы для генерации случайных данных включают в себя:

$random_hash = md5(openssl_random_pseudo_bytes(32));
$random_hash = md5(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));

// New in PHP7
$random_hash = bin2hex(random_bytes(32));
54
ответ дан 27 November 2019 в 16:37
поделиться

1) Создайте активированное поле в базе данных

2) После регистрации отправляется Email

3) Создайте ссылку для включения в Email, используйте Уникальный идентификатор. Это будет выглядеть примерно так

Добро пожаловать Имя пользователя Спасибо за регистрацию.

Пожалуйста, нажмите на ссылку ниже, чтобы активировать вашу учетную запись

domain.com/register.php?uid=100&activate=1

4) Обновите активированное поле до true

alt text
(источник: jackborn.com)

$email_encrypt = urlencode($email);
$special_string = 'maybeyourcompanynamereversed?';
$hash = md5($email_encrypt.$special_string);

Here is the link that is sent to the email that was provided:

http://yourdoman.com/confirm.php?hash='.$hash.'

The actual link will look something like this:

http://yourdomain.com/confirm.php?hash=00413297cc003c03d0f1ffe1cc8445f8
9
ответ дан 27 November 2019 в 16:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: