Одновременное заполнение друпальных форм на разных компьютерах смешивает данные form_state разных компьютеров - PullRequest
0 голосов
/ 29 декабря 2011

У меня очень сложная проблема, которую я не могу объяснить ... вообще. Я действительно надеюсь, что кто-то здесь сможет пролить свет на это затруднительное положение.

На моем веб-сайте есть модуль собственной разработки, который отображает какую-то регистрационную форму. Регистрационная форма состоит из разных частей:

  1. Личная информация
  2. Информация об образовании
  3. Языковые навыки
  4. Локальный / Exchange Специфическая информация
  5. Некоторые необязательные дополнительные замечания.

Используя AHAH и вспомогательный модуль AHAH, я создал (читай: запрограммировал) эту форму для «многостраничности». Он имеет заголовок сверху, описывающий, какая часть общей регистрации вы в настоящее время, и какие части вы еще не завершили. У вас есть предыдущая / следующая кнопка для перемещения между различными страницами формы. Все это контролируется AHAH, и я отслеживаю страницы, используя скрытый элемент формы со значением по умолчанию 'current_page'. Во всяком случае, это отчасти важно.

Важной частью вышеприведенного объяснения является то, что данные всех разных частей сохраняются на разных страницах с помощью переменной form_state. AHAH Helper сохраняет предыдущие значения, введенные в форму, сохраненные в «хранилище» состояния формы.

Теперь некоторые пользователи, похоже, испытывают следующую проблему при регистрации: В то время как они заполняют свою информацию, и некоторые вызовы AHAH запускаются в форме (например: нажатие следующей кнопки, проверка правильности адреса электронной почты, проверка даты рождения для> = 17) после завершения вызова AHAH, значения внутри элементы формы, которые уже были заполнены, были заменены совершенно другими значениями. Имя другого человека, его возраст, адрес электронной почты и т. Д. Даже если этот человек, я предполагаю, что это происходит, он заполняет форму на другом частном компьютере, очевидно, в другом сеансе.

Моим пользователям не нужно заходить на сайт, чтобы зарегистрироваться на этой странице. Я не уверен, что это вызывает проблему?

В любом случае, насколько я могу судить, я могу воссоздать проблему только тогда, когда пытаюсь одновременно заполнить форму различными данными из разных браузеров на моем компьютере. В этом случае мне удастся испортить данные form_state. Но поскольку пользователи находятся на разных частных компьютерах, которые, вероятно, используют разные сеансы / файлы cookie / что-то другое, как возможно когда-либо изменить данные формы Form_state на данные формы Form_state другого компьютера, который также заполняет вне формы ??

Я не понимаю? Есть ли какой-то врожденный недостаток в использовании AHAH (& AHAH Helper) для хранения form_state? Если есть, есть ли какая-то работа вокруг? Я просто делаю огромную ошибку newby где-то в коде моего модуля, которая мешает правильной работе формы?

Есть ли кто-нибудь, кто может пролить хоть немного света на эту проблему? Я абсолютно, и совершенно безучастен, и я не могу представить, что происходит не так и как, и даже если я вообще могу это исправить. Пожалуйста, помогите мне! : S

Заранее спасибо!

С наилучшими пожеланиями,

Tom

Edit: Эта проблема описывает проблему в drupal 6.x

1 Ответ

0 голосов
/ 22 мая 2013

Я отвечаю на свой вопрос после того, как нашел решение (довольно давно, но я забыл об этом вопросе).

Проблема в том, что form_state для разных компьютеров хранится отдельно при использовании сессииинформация от друпал.Тем не менее, похоже, что это неправильно работает с формами AHAH для пользователей , которые не были зарегистрированы .

Регистрация пользователей до того, как они смогут заполнить эти формы, решает все проблемы параллелизма.1007 *

...