简单验证码的问题

时间:2010-09-10 10:38:32

标签: ruby-on-rails ruby ruby-on-rails-plugins

我有一个奇怪的问题。我在rails应用程序中使用表单中的简单验证码。如果我在网页中使用一个验证码,我没有任何问题。但我有一个在一个页面中使用三(3)个表单的场景,其中所有三个表单都将具有验证码。因此,当我刷新页面时,三种形式的验证码数据是相等的。

当我们来到数据库时,一旦页面加载,将创建一个特定id的验证码值,如果我们刷新页面,则不使用验证码,记录将被更新而不是创建另一个记录,如果我更多如果我在第一页中提交表单,请在两个选项卡中打开网页。它抛出一个异常,说“无效的Captcha”

任何人都可以让我知道如何在单页中处理多个验证码。我正在使用simple_captcha插件。

非常感谢

2 个答案:

答案 0 :(得分:1)

我无法看到任何一个页面使用多个验证码。 (我假设你的两个表格将同时提交。)因为验证码的全部目的是避免自动提交表格。

第二点是,我不确定你为什么要在一个页面中使用3个表单。您可以考虑使用一个表单并过滤在控制器端相应地识别参数。

如果我弄错了,请纠正我

谢谢

sameera

答案 1 :(得分:0)

您能解释为什么需要新记录而不是更新(刷新页面时)。

顺便说一句,我在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) %>