Проблемы с простой капчей - PullRequest
       16

Проблемы с простой капчей

0 голосов
/ 10 сентября 2010

У меня странная проблема. Я использую простую капчу в формах в моих приложениях rails. Если я использую одну капчу на веб-странице, у меня нет проблем. Но у меня есть сценарий использования трех (3) форм на одной странице, в котором все три формы будут иметь капчу. Так что, когда я обновляю страницу, данные капчи трех форм совпадают.

Когда мы приходим в базу данных, как только страница загрузится, будет создано значение капчи для одного конкретного идентификатора. Без использования капчи, если мы обновим страницу, запись обновляется вместо создания другой записи, и более того, если я откройте веб-страницу в двух вкладках, и если я отправлю форму на первой странице. Выдает исключение, которое говорит «Invalid Captcha»

Может кто-нибудь, пожалуйста, дайте мне знать, как обрабатывать несколько капчи на одной странице. Я использую плагин simple_captcha.

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

Ответы [ 2 ]

1 голос
/ 10 сентября 2010

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

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

поправьте меня, если я ошибаюсь

спасибо

Самера

0 голосов
/ 30 марта 2011

Можете ли вы объяснить, почему вам нужна новая запись вместо обновления (при обновлении страницы).

Кстати, у меня была такая же проблема с многократными формами на одной странице, обработанными simple_captcha. И моя проблема была в повторном использовании метода simple_captcha show_simple_captcha. Это вызвало повторные вставки базы данных в этом случае И я внес небольшие изменения в плагин, чтобы решить эту проблему:

# Line 73 in lib/simple_captcha/view_helpers.rb (in show_simple_captcha method)

options[:field_value] = set_simple_captcha_data(simple_captcha_key, options[:code_type])

изменено на:

options[:field_value] = options[:multi] ? simple_captcha_key : set_simple_captcha_data(simple_captcha_key, options[:code_type])

Теперь я использую show_simple_captcha(:multi => true) для генерации капчи без обращения к базе данных:

<!-- For first captcha on page -->
<%= show_simple_captcha(:object => :foo) %>

<!-- For next captchas on same page -->
<%= show_simple_captcha(:object => :bar, :multi => true) %>
...