Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails 1.2.6中的验证码_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails rails 1.2.6中的验证码

Ruby on rails rails 1.2.6中的验证码,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在使用一个非常旧的rails应用程序(v1.2.6),需要在站点上实现验证码。有人知道我可以采取什么方法来做到这一点吗 我试过: 搜索支持v1.2.6的rails插件(未找到任何内容) 设置插件(但仅适用于 轨道>3) 任何帮助都将不胜感激。谢谢:)无需使用插件,建议在可用时使用,但不是强制性的。 “自己动手”安装可能需要更多步骤,但肯定会奏效。 举个例子,有一个完整的部分专门解释不带插件的库的使用 基本上有两种方法: 标准挑战和非JavaScript API reCAPTCHA AJA

我正在使用一个非常旧的rails应用程序(v1.2.6),需要在站点上实现验证码。有人知道我可以采取什么方法来做到这一点吗

我试过:

  • 搜索支持v1.2.6的rails插件(未找到任何内容)
  • 设置
    插件(但仅适用于 轨道>3)

任何帮助都将不胜感激。谢谢:)

无需使用插件,建议在可用时使用,但不是强制性的。 “自己动手”安装可能需要更多步骤,但肯定会奏效。 举个例子,有一个完整的部分专门解释不带插件的库的使用

基本上有两种方法:

  • 标准挑战和非JavaScript API
  • reCAPTCHA AJAX API
  • 根据您的需要,使用这些方法中的任何一种,希望您能够在许多场景中顺利使用验证码。API已经过很好的解释,并有一些示例


    希望这能有所帮助。

    所以我最终按照Javier的建议实现了reCaptcha

    在我的视图中添加了以下内容:

    <p class="text-black-11px-17px" style="color: red;"><%=flash[:captcha_error]%></p> 
    <script type="text/javascript" 
    src="http://www.google.com/recaptcha/api/challenge?k=PUBLIC_KEY_HERE"></script>
    <noscript>
       <iframe
    src="http://www.google.com/recaptcha/api/noscript?k=PUBLIC_KEY_HERE"
           height="300" width="500" frameborder="0"></iframe><br>
       <textarea name="recaptcha_challenge_field" rows="3" cols="40">
       </textarea>
       <input type="hidden" name="recaptcha_response_field"
           value="manual_challenge">
    </noscript>
    
    # verify reCaptcha
    uri = URI.parse("http://www.google.com/recaptcha/api/verify")
    response = Net::HTTP.post_form(uri, {
      "privatekey" => "PRIVATE_KEY_HERE", 
      "remoteip" => request.env['REMOTE_ADDR'], 
      "challenge" => params[:recaptcha_challenge_field], 
      "response" => params[:recaptcha_response_field]
    })
    
    flash[:captcha_error] = nil
    if ((@contact.valid?) && (response.body.include? "success")) 
        # VALIDATION SUCCESSFUL - SEND THE EMAIL
    elsif (response.body.include? "false")
       flash[:captcha_error] = "The CAPTCHA you entered is invalid. Please try again."
       render :action => 'contact'        
    else
        render :action => 'contact'
    end
    

    Rails1.2没有内置的可用插件机制(而且它非常旧)。我想唯一可行的方法是阅读其他插件的源代码,从中获取所需的内容,并将其包含到应用程序中。您可能需要了解Rails3插件(或源插件的目标)和Rails1.2的工作知识。最后,我真的为你感到抱歉…嗯。所以我想我运气不好:(但是如果禁用Javascript并提交表单会发生什么?这在第一种方法“非Javascript API”中有介绍。示例显示,如果禁用Javascript,则加载iframe,并且一切正常。