Где правильнее записать, на какие вопросы уже ответил пользователь(сайт-викторина)?
Решил сделать сайт-викторину на космическую тематику к конкурсу в колледже.
Вся викторина будет на одной(главной) странице сайта. Вопросы обновляться через AJAX. Каждый следующий вопрос выбирается случайным образом из таблицы вопросов.
(В БД две таблицы - Вопросы(question_id,question_text) и Ответы(answer_id, question_id,answer_text,is_corrext))
Вопрос в следующем - где хранить question_id, выбранный пользователем для него answer_id, и, наверное, номер последнего вопроса? Это для того чтобы подсчитать результаты в конце, и не выдавать пользователю один и тот же вопрос два раза.
Стоит ли хранить эти данные в cookies, или же в Сессии? Нет ли там подводных камней в данном случае, рисков что данные спутаются/пропадут?
Проходить викторину можно будет без авторизации.
Хоть конкурс и проект не серьёзный, самому хочется сразу сделать всё правильно.
Andrew Stark, Спасибо за комментарий. Ко мне просто закрались сомнения по поводу этого способа из-за того что сайт не будет корректно работать если cookies отключены. Или доля таких пользователей достаточно мала чтобы этим пренебречь?
куки - доступное пользователю для редактирования хранилище. Хранить в нем какие-либо результаты плохая идея, я себе понапишу что все вопросы ответил верно и - профит, я - Илон Маск.
В идеале - завести таблицу в бд, куда вносится просто рандомное генерированное число/хеш, этот же хеш хранится в куке пользователя. При заходе проверяется кука - если уже заходил - вытащить все результаты, если что-то решил - записать в базу по ключу из куки.
Ну я предусмотрел что пользователь может его просматривать/редактировать, поэтому хранить там я планировал только id_question и соотв. id_answer, а проверка правильности будет вестись уже на сервере, по прохождению викторины.