Как запомнить пользователя, если он заполнил и отправил все формы?
Всем привет.
На сайте необходимо реализовать 3 формы, которые пользователь должен в течение 1 года отправить.
1 форма (FormIt) — 1 страница (ресурс). Как вывести чанк «Спасибо, вы уже заполняли эту форму 06.12.2021.», если пользователь уже заполнял эту форму?
По какому критерию запоминать, что форма уже была отправлена?
Пока в голову приходит что-то вроде такой схемы:
1. Хранить все формы с помощью сниппета FormIt2db
2. В каждой форме добавить 3 скрытых инпута: ID формы (тут можно вручную прописать), ID залогиненого пользователя ({$_modx->user.id}), текущая дата в UNIX формате ({time()}). Все отправленные формы сохраняем в отдельной таблице.
3. Разработать сниппет, который перед выводом форм будет проверять в базе наличие ID формы + ID пользователя НЕ пусто, то показываем чанк с сообщением.
Я правильно думаю или заморочено?
Буду рад рекомендациям.
На сайте необходимо реализовать 3 формы, которые пользователь должен в течение 1 года отправить.
1 форма (FormIt) — 1 страница (ресурс). Как вывести чанк «Спасибо, вы уже заполняли эту форму 06.12.2021.», если пользователь уже заполнял эту форму?
По какому критерию запоминать, что форма уже была отправлена?
Пока в голову приходит что-то вроде такой схемы:
1. Хранить все формы с помощью сниппета FormIt2db
2. В каждой форме добавить 3 скрытых инпута: ID формы (тут можно вручную прописать), ID залогиненого пользователя ({$_modx->user.id}), текущая дата в UNIX формате ({time()}). Все отправленные формы сохраняем в отдельной таблице.
3. Разработать сниппет, который перед выводом форм будет проверять в базе наличие ID формы + ID пользователя НЕ пусто, то показываем чанк с сообщением.
Я правильно думаю или заморочено?
Буду рад рекомендациям.
Комментарии: 8
Добавлять поля к форме, ID формы, ID пользователя, Дата заполнения. Либо расширить таблицу:
formit_forms(так наверно быстрее будет поиск, если еще индекс сделать).
Перед отправкой проверять на эти параметры, написав свой хук.
formit_forms(так наверно быстрее будет поиск, если еще индекс сделать).
Перед отправкой проверять на эти параметры, написав свой хук.
В целом правильно… только вот вопрос, FormIt2db хранит данные не в json формате случайно? Поиск вы потом как будете по таблице делать?
Вместо скрытых полей — можно prehook сделать и добавлять к данным информацию о пользователе, текущем времени.
Вместо скрытых полей — можно prehook сделать и добавлять к данным информацию о пользователе, текущем времени.
Привет.
Спасибо за ответ.
FormIt2db, оказывается, создает автоматически, если его еще нет, xPDO объект, папку со схемами, моделью.
В базе делаешь кастомную табличку с этими тремя полями и теперь всё сохраняется туда.
Сделал прекхук, который сам подставляет нужные данные для запоминания пользователя.
Но у меня теперь другая проблема.
Сама форма — это форма с другого сайта, в action стоит:
Пока уходят данные только той формы, чью кнопку Отправить я нажал.
Есть идеи?
Спасибо за ответ.
FormIt2db, оказывается, создает автоматически, если его еще нет, xPDO объект, папку со схемами, моделью.
В базе делаешь кастомную табличку с этими тремя полями и теперь всё сохраняется туда.
Сделал прекхук, который сам подставляет нужные данные для запоминания пользователя.
Но у меня теперь другая проблема.
Сама форма — это форма с другого сайта, в action стоит:
<form name="Webform 1" action="https://***/modules/Webforms/capture.php" method="post">
Вторая форма <form action="[[~[[*id]]]]">
Как сделать так, чтобы при нажатии на отправить в первой форме (или второй) — данные отправляются и на внешнюю форму, и в базу (вторая форма)?Пока уходят данные только той формы, чью кнопку Отправить я нажал.
Есть идеи?
Так же хуком, отправляй данные постом через curl на другой сайт.
Привет, спасибо за ответ.
Можг бы кусочек кода-примера с curl привести?
Знаком с curl, но только для скачивания файлов.
Как передать 2 формы curl даже не представляю.
Или как искать в Гугле?
Можг бы кусочек кода-примера с curl привести?
Знаком с curl, но только для скачивания файлов.
Как передать 2 формы curl даже не представляю.
Или как искать в Гугле?
Хочу уточнить, а то не усну)
Как запомнить пользователя, если он заполнил и отправил все формы? На сайте необходимо реализовать 3 формы, которые пользователь должен в течение 1 года отправить.Это что означает? Что нужно сохранить данные о пользователе только если между заполнением первой и третьей формы прошло не более 12 месяцев? Если заполнил первую форму в марте 2000го а третью в апреле 2001 го то уже не сохраняем?
Привет.
Нет, не совсем так.
3 страницы с 3мя разными формами.
Заполнить в течение года все 3 формы — это обязанность пользователя.
Если он уже заполнял форму (например, форму номер 1) то, вместо формы (чанк с формой будет скрыт) он увидит «Спасибо, Вы уже заполняли эту форму».
Не очень сумбурно объяснил? :))
Нет, не совсем так.
3 страницы с 3мя разными формами.
Заполнить в течение года все 3 формы — это обязанность пользователя.
Если он уже заполнял форму (например, форму номер 1) то, вместо формы (чанк с формой будет скрыт) он увидит «Спасибо, Вы уже заполняли эту форму».
Не очень сумбурно объяснил? :))
нет, теперь понятно)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.