Añadir la protección de BotDetect CAPTCHA usando Ruby on Rails
Importante
Cómo este ejemplo usa la versión de componente COM de BotDetect CAPTCHA, servidores y máquinas de desarrollo deben utilizar Windows. Por el momento no podemos dar soporte para Java sobre otros sistemas operativos.
Requisitos:
- Ruby 1.8.4+
- Rails 1.1
- Una máquina con Windows
- BotDetect 2.0 ASP CAPTCHA
Comience descargando el ejemplo de BotDetect CAPTCHA usando Ruby on Rails.
- Añadir la acción "LanapBotDetect" a un control
- Generar la imagen del CAPTCHA
- Usar el CAPTCHA de audio
- Validando el ingreso del usuario
Paso 1: Añadir la acción "LanapBotDetect" a un control
Deben añadirse ciertas cosas a la clase de la página que contendrá la protección de BotDetect CAPTCHA, se debe agregar la línea require del ejemplo y ciertas definiciones de LanapBotDetect, como se puede ver en el archivo sample_controller.rb:
require 'win32ole'
class SampleController < ApplicationController
def LanapBotDetect
if(!params["Command"].nil?)
@command = params["Command"].to_s
@captcha = WIN32OLE.new('Lanap.BotDetect')
if(!params["TextStyle"].nil?)
@captcha.TextStyle = params["TextStyle"].to_s
end
if(!params["ImageWidth"].nil?)
@captcha.ImageWidth = params["ImageWidth"].to_s
end
if(!params["ImageHeight"].nil?)
@captcha.ImageHeight = params["ImageHeight"].to_s
end
if(!params["CodeLength"].nil?)
@captcha.CodeLength = params["CodeLength"].to_s
end
if(!params["CodeType"].nil?)
@captcha.CodeType = params["CodeType"].to_s
end
if(!params["Format"].nil?)
@captcha.Format = params["Format"].to_s
end
if("CreateImage" == @command)
@buffer = @captcha.CreateImage.pack("c*")
session[:code] = @captcha.GetValue
@type = "image/jpeg"
send_data(@buffer, :filename => "captcha.jpg",
:type => @type, :disposition => "inline")
elsif("CreateSound" == @command)
@buffer =
@captcha.CreateSoundFromCode(session[:code]).pack("c*")
@type = "audio/x-wav"
send_data(@buffer, :filename => "captcha.wav",
:type => @type, :disposition => "inline")
end
end
end
end
Paso 2: Generar la imagen del CAPTCHA
La forma más simple de mostrar la imagen CAPTCHA (usando los parámetros por defecto) en su .rhtml es definiendo un objeto <img> así:
<img src="<%= url_for(:action => "LanapBotDetect") + '?Command=CreateImage' %>" alt="CAPTCHA image" />
Si usted tiene BotDetect instalado y todo funciona correctamente, deberá ver un CAPTCHA como en la imagen:
Configurando parámetros adicionales de la imagen CAPTCHA
Si usted quiere configurar parámetros adicionales (como por ejemplo el tamaño, tipo, entre otros) sólo debe especificar esto en la cadena de solicitud de la imagen. Por ejemplo:
<img src="<%= url_for(:action => "LanapBotDetect") +
'Command=CreateImage&TextStyle=28&ImageWidth=300&imageHeight=
40&CodeLength=7&CodeType=1&Format=PNG" alt="CAPTCHA image" />
La imagen resultante tendrá el siguiente aspecto:
Todos los otros parámetros (aparte de ?Command=CreateImage) son opcionales, y si uno de ellos no es proporcionado, se utilizará un valor por defecto.
Por ejemplo, el parámetro TextStyle especifica que algoritmo será usado para generar el dibujo del CAPTCHA (uno de los 50 algoritmos incluídos en BotDetect CAPTCHA). Puede encontrar una lista de todos los valores válidos, ejemplos y capturas de pantalla en la página de referencia de TextStyle.
Para más información sobre todos los parámetros disponibles, vea la documentación de Componentes de Interfaz de BotDetect.
Paso 3: Usar el CAPTCHA de audio
Si desea utilizar un sonido para mejorar la accesibilidad de su CAPTCHA, la forma más simple de hacerlo es así:
<a href="<%= url_for(:action => "LanapBotDetect") +
'?Command=CreateSound">
<img src="speaker.gif" alt="Play Sound" style="border:0;" />
</a>
Una imagen de un altavoz aparecerá (puede ser encontrados en los ejemplos que se copian al instalar el producto) que al hacerle clic ejecutará un sonido que representa el texto del CAPTCHA. Puede también utilizar un enlace de texto (como "Reproducir sonido") o incluso otra imagen si así lo desea.
Paso 4: Validando el ingreso del usuario
En un escenario típico de uso, un cuadro de texto recibirá la entrada del usuario la cual debe coincidir con el CAPTCHA, así para comparar este ingreso puede hacer algo como lo mostrado en el código inferior.
<div id="ValidationDiv">
<%= text_field("Captcha", "TextBoxUserCode", "size" => 20,
"id" => "TextBoxUserCode" ) %>
<%= submit_tag("Validate") %>
<% if params.include?("Captcha") %>
<% if (session[:code] and
params["Captcha"]["TextBoxUserCode"].to_s.upcase ==
session[:code]) %>
<span id='MessageCorrectLabel'>Correct!</span>
<% else %>
<span id='MessageIncorrectLabel'>Incorrect!</span>
<% end %>
<% end %>
</div>
Versiones Actuales de BotDetect
- BotDetect ASP.NET CAPTCHA v2.0.152009–11–23
- BotDetect ASP CAPTCHA v2.0.92009–02–12
Advertencia
Esta página es una traducción no oficial de la página original: How To Add BotDetect CAPTCHA Protection to Ruby on Rails Forms y puede estar incompleta, incorrecta o poco actualizada.
Última traducción del 2009-12-18. Esto se aplica para los productos BotDetect ASP.NET CAPTCHA v2.0.15 y BotDetect ASP CAPTCHA v2.0.9.





