Собираюсь пойти со следующим подходом.
Реестры пользователей.
База данных обновлена с их деталями и добавлен флаг для активных / не активных.
Электронная почта отправляется на зарегистрированный адрес электронной почты со ссылкой.
Ссылка ведет на страницу, которая может подтвердить адрес электронной почты как действительный и обновить базу данных.
Не знаю, в какой среде вы работаете и делаете несколько предположений, это примерно так.
Я полагаю, вы уже сохраняете регистрацию пользователя?
В дальнейшем вы захотите сгенерировать какой-нибудь хеш и вставить его вместе с информацией о пользователе / члене ...
$hash = substr(md5(uniqid()), 0, 5);
Чувствуете ли вы себя уверенно, создавая представление электронной почты и отправляя его с помощью phpMailer или аналогичного?
Если это так, сделайте это со ссылкой, которая при попадании захватит member_id и member_hash и так что-то вроде следующего ...
Здесь я снова использовал PDO, так много способов делать то, что вы хотите ... все, что лучше для вас.
// PDO Instance
$pdo = $this->actionServer->getDataSource('PDO');
$findMember = $pdo->prepare('SELECT * FROM member WHERE member.member_id = :memberId AND member.member_hash = :memberHash AND hidden = 1');
$findMember->bindParam(':memberId', $memberId);
$findMember->bindParam(':memberHash', $memberHash);
$findMember->execute();
$findMemberResult = $findMember->fetch(PDO::FETCH_ASSOC);
if (empty($findMemberResult)) {
$this->log->error('Could not find member based on ID and Hash combination');
throw new HTTPException(404);
}
/**
* Could use a method like below to approve
*/
protected function approveMember($memberId, $pdo) {
$sql = 'UPDATE member SET member.hidden = 0 WHERE member.member_id = :memberId';
$updateMember = $pdo->prepare($sql);
$updateMember->bindParam(':memberId', $memberId);
$updateMember->execute();
}
Надеюсь, это поможет!
Cheerio