Лучшие практики для кодов подтверждения по электронной почте

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

Новые пользователи должны подтвердить свои адреса электронной почты - я делаю это, генерируя код и отправляя его пользователю по электронной почте, который он затем может использовать для активации своей учетной записи. Вместо того, чтобы хранить этот ключ в базе данных, ям с помощью удобного небольшого обходного пути: код является результатом:

md5("xxxxxxxxx".$username."xxxxxxxxxxx".$timestamp."xxxxxxxxx");

Где $ timestamp относится к времени создания пользователя. В целом я был очень доволен этим, но потом я задумался, достаточно ли это безопасно? А как насчет возможности столкновения? И мне также нужно сгенерировать коды для сброса пароля и т. Д. Если бы я использовал подобную методологию, коллизия могла бы привести к тому, что один пользователь непреднамеренно сбросил другого пользователя ».пароль. И этоничего хорошего.

Так как ты делаешь эти вещи? Моими мыслями была таблица следующего формата:

codePK (int, a-I), userID (int), type (int), code (varchar 32), date (timestamp)

Куда 'тип' будет 1, 2 или 3 означаетактивация ","изменение электронной почты " или же "восстановление пароля", Это хороший способ сделать это? У тебя есть способ получше?

Используя метод, аналогичный описанному выше, могу ли я автоматически удалить что-либо старше двух дней без использования cron-jobs? Мой хост (nearfreespeech.net) не поддерживает их. Если это вообще возможно, яХотелось бы избежать работы cron на внешнем хосте, который wget 's скрипт, который удаляет вещи, какпросто грязно = P.

Спасибо!

скуловая кость

Обновить:

Чтобы уточнить: яМы поняли, что единственный способ безопасно и безопасно выполнить эту задачу - использовать базу данных, чего и пытался избежать исходная функция. Мой вопрос о том, как таблица (или таблицы?) Должны быть структурированы. Кто-то предложил мне покончить с codePK и просто сделать код PK. Короче говоря, мой вопрос: это то, что вы делаете?

Ответы на вопрос(5)

Ваш ответ на вопрос