Используя PHP, что некоторые пути состоят в том, чтобы генерировать случайный код подтверждения, который может храниться в DB и использоваться для электронного письма с подтверждением? Я не могу ни за что в жизни думать о способе генерировать уникальное число, которое может быть сгенерировано от профиля пользователя. Тем путем я могу использовать функцию для создания числа достаточно маленьким, чтобы быть включенным в URL (см. эту ссылку). Помните, пользователь должен нажать на ссылку для "подтверждения/активирования" его учетной записи. Если я не могу использовать числа, у меня нет проблем с помощью и букв и чисел.
После этих слов я попытался хешировать имя пользователя наряду с "солью", чтобы сгенерировать случайный код. Я знаю, что должен быть лучший путь, поэтому давайте услышим его.
Это может быть хорошая идея проверить , а также поток ошибок процесса .
-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));
1) Создайте активированное поле в базе данных
2) После регистрации отправляется Email
3) Создайте ссылку для включения в Email, используйте Уникальный идентификатор. Это будет выглядеть примерно так
Добро пожаловать Имя пользователя Спасибо за регистрацию.
Пожалуйста, нажмите на ссылку ниже, чтобы активировать вашу учетную запись
domain.com/register.php?uid=100&activate=1
4) Обновите активированное поле до true
(источник: 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