Активация учётной записи по ссылке на PHP
08.06.2018 04:14:10 pm
Всем доброго времени суток! Сделал регистрацию по примерам из темы: Регистрация | Авторизация на сайте PHP и MySQLi. Регистрацию проходят боты и оставляют много ссылок. Хочу немного усложнить им жизнь, сделав подтверждение электронной почты по ссылке, объяснять что это, думаю, не стоит, на этом сайте регистрация проходит именно так. Пользователь зарегистрировался и на его почту приходит письмо с ссылкой. Ссылка имеет ключ. Как такой ключ генерировать и как его проверять в дальнейшем.
Оправляем письмо:
Если уже обсуждалось, дайте ссылку на тему. Спасибо.
Оправляем письмо:
mail( ... );
, в письме ссылка с ключом. Что дальше?Если уже обсуждалось, дайте ссылку на тему. Спасибо.
- Жалоба
08.06.2018 05:08:08 pm
Я бы сделал так: добавил бы еще два поля, например, "activation" и "activ_key", в таблицу "users". В поле "activation" хранится информация активирован пользователь или нет (например:
Когда пользователь переходит по ссылке, файл "activation.php" выполняет следующие действия:
- Получаем параметры, что содержит ссылка, методом GET:
- Используя ID пользователя получаем строку из поля "activ_key" таблицы "users".
- Сравниваем строку полученную из БД и из URL. Если строки совпадают, меняем значение поля "activation" на
При авторизации пользователя, обязательно проверять значение поля "activation", если его значение
Темы, которые помогут собрать сценарий активации пользователя:
- Передача переменных методом GET ($_GET в PHP)
- Генерация случайной строки на PHP
Вообще, активация учетной записи, не усложняет жизнь ботам, она усложняет процедуру регистрации пользователя. Чтобы избавится от спам ботов, могу предложить такое решение: Защита сайта от Спам ботов.
0
- неактивирован (по умолчанию), 1
- активирован). В поле "activ_key" сохраняем сгенерированную строку. Генерировать строку можно при помощи функции md5()
, или написать свой генератор случайных строк. В письме добавляем ссылку с идентификатором пользователя и со случайной строкой, примерно такого вида:https://site/activation.php?id=xxx&activ=сгенерированнаяСтрока
Когда пользователь переходит по ссылке, файл "activation.php" выполняет следующие действия:
- Получаем параметры, что содержит ссылка, методом GET:
id
и activ
.- Используя ID пользователя получаем строку из поля "activ_key" таблицы "users".
- Сравниваем строку полученную из БД и из URL. Если строки совпадают, меняем значение поля "activation" на
1
, если нет, выдаем ошибку.При авторизации пользователя, обязательно проверять значение поля "activation", если его значение
0
, не пускать пользователя в систему, выводя соответствующее сообщение, о том, что необходимо пройти процедуру активации.Темы, которые помогут собрать сценарий активации пользователя:
- Передача переменных методом GET ($_GET в PHP)
- Генерация случайной строки на PHP
Вообще, активация учетной записи, не усложняет жизнь ботам, она усложняет процедуру регистрации пользователя. Чтобы избавится от спам ботов, могу предложить такое решение: Защита сайта от Спам ботов.
08.06.2018 07:01:58 pm
Slash, спасибо за ответ. Я по примерам из темы: Передача переменных методом GET ($_GET в PHP) создал файл activation.php, вот, что получилось:
<?php
/***
User Activation
File activation.php
Created 08 06 2018
Update 08 06 2018
*/
$user_id = isset($_GET['user_id']) ? $_GET['user_id'] : null;
$activ = isset($_GET['activ']) ? $_GET['activ'] : null;
if (isset($user_id) | isset($activ))
{
// Запрос и сравнение
}