DANFA

Активация учётной записи по ссылке на PHP

PHP
Всем доброго времени суток! Сделал регистрацию по примерам из темы: Регистрация | Авторизация на сайте PHP и MySQLi. Регистрацию проходят боты и оставляют много ссылок. Хочу немного усложнить им жизнь, сделав подтверждение электронной почты по ссылке, объяснять что это, думаю, не стоит, на этом сайте регистрация проходит именно так. Пользователь зарегистрировался и на его почту приходит письмо с ссылкой. Ссылка имеет ключ. Как такой ключ генерировать и как его проверять в дальнейшем.

Оправляем письмо: mail( ... );, в письме ссылка с ключом. Что дальше?

Если уже обсуждалось, дайте ссылку на тему. Спасибо.
Я бы сделал так: добавил бы еще два поля, например, "activation" и "activ_key", в таблицу "users". В поле "activation" хранится информация активирован пользователь или нет (например: 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

Вообще, активация учетной записи, не усложняет жизнь ботам, она усложняет процедуру регистрации пользователя. Чтобы избавится от спам ботов, могу предложить такое решение: Защита сайта от Спам ботов.
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))
{
	// Запрос и сравнение
}
RD 24, не могли бы Вы поделиться своим кодом полностью? А то в Вашем коде нет основного функционала.
Спасибо.