textcaptcha
textcaptcha utilizies the textcaptcha.com API to help prevent SPAM. The idea behind the library is to be framework agnostic.
Configuring
If you’ve not yet obtained an API key for textcaptcha.com, do so at textcaptcha.com/register.
Textcaptcha.configure do |config|
config.api_key = 'yourapikeyhere'
end
Retrieving a textCAPTCHA
captcha = Textcaptcha.obtain
# => { :question => "What's eight - 7?", :answers => [ "c4ca4238a0b923820dcc509a6f75849b", "f97c5d29941bfb1b2fdab0874906ab82" ] }
Validating an answer
Validate the user’s answer compared to the answers retrieved from Textcaptcha.obtain
captcha = Textcaptcha.obtain
# => { :question => "What's eight - 7?", :answers => [ "c4ca4238a0b923820dcc509a6f75849b", "f97c5d29941bfb1b2fdab0874906ab82" ] }
Textcaptcha.valid? 'sixteen', captcha[:answers]
# => false
Rails 3 Implementation
Since textcaptcha remains framework agnostic, there’s a bit more work to implement it, yet minimal.
On the sign up form, retrieve the question and answer(s).
# app/controllers/users_controller.rb
# GET /users/new
def new
Textcaptcha.configure do |config|
config.api_key = 'yourapikeyhere'
end
captcha = Textcaptcha.obtain
session[:captcha_answers] = captcha[:answers]
@captcha_question = captcha[:question]
@user = User.new
end
# POST /users
def create
user = User.new(params[:user])
if Textcaptcha.valid?(params[:captcha_answer], session[:captcha_answers]) && user.save
# ...
end
end
In your view.
# app/views/users/new.html.erb
<%= label_tag 'captcha_answer', @captcha_question %>
<%= text_field_tag 'captcha_answer' %>
Contributing
Be a hero in helping with the battle against spam.
-
Fork
-
Write test(s)
-
Implement
-
Submit pull request
Or
-
Send me money