botan
Новичок
Подходят ли сесии для хранения большого количества структурированой инфы?
Ситуация:
Есть сайт на котором заполняется анкета. Её заполненые поля должны быть видны пользователю. (В БД из них пишутся всего несколько и то главным образом увеличивая значения какого-то поля).
Раньше всё хранил в сесии Array[id]=value и так же выводил.
ТЕперь стало сложнее, анкеты стали "навороченее", и один и тот же кусок анкеты может быть заполнен несколько раз одним и тем же пользователем по-разному (в разном контексте).
Т.е. устроено это примерно так:
"У вас была машина?" Да/Нет.
Если да - маленькая анкета
"Введит первую машину
Год покупки
Марка
Год ПРодажи
Причина продажи
...
Заканчивается фразой, а кроме этой у вас были другие машины? Да/Нет.
Если да - опять эта же анкета с тем же вопросом в конце.
"
В бд ничего писать не надо - введёная информация используется для "подстройки навигации и некоторого другого контента сайта под конкертного пользователя".
При чём сколько такой информации будет - введено (может машин вообще не было а может было штук 10) - не известно.
Мои варианты решений:
1. Иметь в сессии массивы массивов. т.е. для машин это массив содержащий порядковый номер массива в качестве ключа - и в качестве значения - массив с годом продажи/покупки маркой и т.д.
Проблема в том - что довольно часто будут встречаться обращения вида "сколько немецких автомобилей было у пользователя" и т.д. и как мне кажется не очень правильно так обращаться к элементу "массива" сам "родитель" которого - тоже массив, не говоря о том что сессия - тоже по сути дела "массив" Или я не прав?
2. Записывать каждое введение в БД. в месте с идентификатором PHPSESID и временем когда оно было сделано. Ну и по crontab чистить старые записи.
Если для этого лучше подходит что-либо другое с удовольствием приму ключевое слово
Ситуация:
Есть сайт на котором заполняется анкета. Её заполненые поля должны быть видны пользователю. (В БД из них пишутся всего несколько и то главным образом увеличивая значения какого-то поля).
Раньше всё хранил в сесии Array[id]=value и так же выводил.
ТЕперь стало сложнее, анкеты стали "навороченее", и один и тот же кусок анкеты может быть заполнен несколько раз одним и тем же пользователем по-разному (в разном контексте).
Т.е. устроено это примерно так:
"У вас была машина?" Да/Нет.
Если да - маленькая анкета
"Введит первую машину
Год покупки
Марка
Год ПРодажи
Причина продажи
...
Заканчивается фразой, а кроме этой у вас были другие машины? Да/Нет.
Если да - опять эта же анкета с тем же вопросом в конце.
"
В бд ничего писать не надо - введёная информация используется для "подстройки навигации и некоторого другого контента сайта под конкертного пользователя".
При чём сколько такой информации будет - введено (может машин вообще не было а может было штук 10) - не известно.
Мои варианты решений:
1. Иметь в сессии массивы массивов. т.е. для машин это массив содержащий порядковый номер массива в качестве ключа - и в качестве значения - массив с годом продажи/покупки маркой и т.д.
Проблема в том - что довольно часто будут встречаться обращения вида "сколько немецких автомобилей было у пользователя" и т.д. и как мне кажется не очень правильно так обращаться к элементу "массива" сам "родитель" которого - тоже массив, не говоря о том что сессия - тоже по сути дела "массив" Или я не прав?
2. Записывать каждое введение в БД. в месте с идентификатором PHPSESID и временем когда оно было сделано. Ну и по crontab чистить старые записи.
Если для этого лучше подходит что-либо другое с удовольствием приму ключевое слово