Не обязательно все делать именно в mysql так что если я говорю база это значит может быть в т.ч. к примеру локальные переменные сессии веб-сервера.
База данных - это слепок состояния на текущий момент, но она не отвечает за действия и реакцию, только хранит данные. Вам нужен бакэнд - серверная часть, которая будет стоять между пользовательским браузером и базой данных (напрямую в принципе нет возможности получить доступ из браузера к базе данных, хотя есть ужасные примеры когда такое пытались сотворить).
В ваших сущностях должны быть переменные содержащие текущее состояние - т.е. человек только зашел на сайт, ввел верный код, ввел ошибочный код и т.п. когда рисуешь бизнеслогику на бумажке/в спец программах это сразу видно.
Человека идентифицируйте сессией, понятие сессия есть во всех фреймоврках для вебсервера, например php - смотрите session_start()