[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка токена из письма подтверждения регистраци
Raymond
Раннее я уже создавал тему "UPDATE на основании SELECT или сразу UPDATE?" http://phpforum.su/index.php?showtopic=92347&hl= , спасибо всем ответившим, но , думаю, лучше задать вопрос поконкретнее.

В общем, хочу сделать подтверждение регистрации по email, и сейчас пишу страницу проверки токена из письма.

Вот какие варианты пришли в голову по повоу проверки из БД:

а) Создать поле token и token_date в самой таблице юзеров, потом в скрипте проверки токена делать лишь запрос:

'UPDATE users SET confirm = 1 WHERE id = ' . $_GET["user_id"] . ' AND token = ' . $_GET["token"] . ' AND token_date = не старше недели AND confirm = 0'

и если mysqli_stmt_affected_rows вернула 0, то посылать.

б) Создать отдельную таблицу с полями user_id, token, date.
В скрипте проверки сделать запрос
'SELECT user_id, token, date FROM reg_tokens WHERE user_id= '.$_GET["user_id"]

Проверить токен и дату, если все нормально, то делать
'UPDATE users SET confirm = 1 WHERE id = ' . $_GET["user_id"]

Что лучше, и если ничто из этого не лучше, то что, по вашему мнению, лучше, чем это? biggrin.gif biggrin.gif biggrin.gif
arbuzmaster
token = ' . $_GET["token"] . ' ohmy.gif
Лучше так не делать! wink.gif

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
AllesKlar
Цитата (arbuzmaster @ 22.05.2017 - 20:00)
token = ' . $_GET["token"] . '  ohmy.gif
Лучше так  не делать!  wink.gif

Нормально.
Говорят, что это вполне безопасный код, если перед этим есть строки 1-28

Raymond
Цитата
а) Создать поле token и token_date в самой таблице юзеров, потом в скрипте проверки токена делать лишь запрос:
Плохая идея.
Токен нужен тебе только один раз. Вообще один. И он так и будет телепаться всю "жизнь" только из-за того, что его единожды использовали. Мертвое поле в таблице.
Сделай отдельную таблицу token
В ней user_id, expiry_date, active
Если юзер свой аккаунт активировал, то active = false
Если expiry_date прошло, то об этом и сообщаем.

Таким образом, таблица user не будет загажена мертвыми данными.

_____________
[продано копирайтерам]
twin
Цитата (AllesKlar @ 22.05.2017 - 19:42)
Токен нужен тебе только один раз. Вообще один. И он так и будет телепаться всю "жизнь" только из-за того, что его единожды использовали. Мертвое поле в таблице.
Не факт. Это поле вполне может подойти для автологина. Что бы в кукис не вытаскивать даже намек на пароль.


_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
AllesKlar
Цитата (twin @ 23.05.2017 - 01:25)
Цитата (AllesKlar @ 22.05.2017 - 19:42)
Токен нужен тебе только один раз. Вообще один. И он так и будет телепаться всю "жизнь" только из-за того, что его единожды использовали. Мертвое поле в таблице.
Не факт. Это поле вполне может подойти для автологина. Что бы в кукис не вытаскивать даже намек на пароль.

Нет. Сама идея токена в его
- одноразовoсти
- ограниченного времени использования.
- (опционально) привязка к конкретному действию

Если хоцца хеш для кук и т.п., то пусть делает поле с хешем и его пользует.
Иначе каша, кровь, кишки, проклятье коллег и баги smile.gif

_____________
[продано копирайтерам]
twin
Я про идею. Назвать хоть горшком можно. Просто не обязательно городить таблицы или поля для токенов, можно совместить полезное с прятным)

_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.