分享內容(
captcha 使用的環境設定完成。
使用 captcha 的機制
以前一日 [RoR] 簡單畫出 Web 2.0 特色圖形 Badges 徽章 標記 的例子為例,要加上 captcha 只要在 app/views/demo/index.html.erb 裡:
上述的 show_simple_captcha 的其他參數語法,可詳見該網站 Simple Captcha 來測試出會有怎樣不同的畫面。
而在 相對應的 controller 之中,只要將需要做這個圖型驗證的 action ,加入
所以在 前一篇 的原始碼中 app/controllers/demo_controller.rb 加入上述的語法:
這樣在接續 前一篇 的程式碼,再加上述的語法,就會出現像

就可利用 captcha 而達到防止被濫用的目的。
8人
簡而言之,就是做成人可以辨識,但無法利用程式軟體去辨識的圖形,要人親自回應圖形內容是什麼,才提供請求服務之機制。通常會在可以留言、註冊帳號、下載檔案等功能中,加入這 Captcha 的機制,以防止被透過程式,造成大量的 spam 留言,註冊、下載;為了防止辨識軟體破解,而會將圖形做一定程度的扭曲,目的是使真人看得懂,但程式無法辨識出,這是圖形特色。
安裝 captcha 的 plugins
RoR 中加入 Captcha 的機制有幾種的解決方式,在此用最簡單的方案 Simple Captcha ,只要照著該文的步驟,很快就可以建置此機制。
# 如果系統沒有 subersion 的話,會無法執行再下一個指令(有關 svn: 的網址下載),才需要先做安裝 subversion 的動作。 yum install subversion # 安裝 plugins script/plugin install svn://rubyforge.org/var/svn/expressica/plugins/simple_captcha rake simple_captcha:setup rake db:migrate # 在 config/routes.rb 編輯: ActionController::Routing::Routes.draw do |map| ... # 多加這一行: map.simple_captcha '/simple_captcha/:action', :controller => 'simple_captcha' ... end # 在 app/controllers/application.rb 編輯: ApplicationController < ActionController::Base ... # 多加這一行: include SimpleCaptcha::ControllerHelpers end
captcha 使用的環境設定完成。
使用 captcha 的機制
以前一日 [RoR] 簡單畫出 Web 2.0 特色圖形 Badges 徽章 標記 的例子為例,要加上 captcha 只要在 app/views/demo/index.html.erb 裡:
<%= show_simple_captcha(:label => "請輸入您所看見的字母", :image_style => "random", :distortion => 'medium') -%> # 在 <%= submit_tag "畫出預覽", :name => nil %> 這一行的上面加入上面這一行
上述的 show_simple_captcha 的其他參數語法,可詳見該網站 Simple Captcha 來測試出會有怎樣不同的畫面。
而在 相對應的 controller 之中,只要將需要做這個圖型驗證的 action ,加入
if simple_captcha_valid?
do_this # 原有的 action 動作
else
do_that # 不進行上述 action 的回應
end
這樣的語法,就可先檢查圖型驗證是否正確,而決定是否執行該動作:所以在 前一篇 的原始碼中 app/controllers/demo_controller.rb 加入上述的語法:
def star
if simple_captcha_valid?
# 若沒有 text 的參數,用此預設值寫出字來
...
else
render :text => "識別碼不對,請回上一頁,重新整理後再輸入新的正確的識別碼"
end
end
這樣在接續 前一篇 的程式碼,再加上述的語法,就會出現像

就可利用 captcha 而達到防止被濫用的目的。
參考資料:http://expressica.com/simple_captcha/
▼ ADVERTISEMENT ▼
-
‧
-
‧
-
‧
相關問答
- [ASP.NET 控制項實作 Day28] 圖形驗證碼控制項
- 鐵人賽的疑問?
- [ASP.NET 控制項實作 Day28] 圖形驗證碼控制項(續)
- 最後一天 -- 鐵人賽對我的意義!!!
- 收到鐵人賽的T-shirt啦~~ (有圖有真相)
- [RoR]為何Linux -> Perl -> Ruby on Rails?
- 第一屆iT邦幫忙鐵人賽得獎名單已經公佈囉
- 第一屆iT邦幫忙鐵人賽早鳥獎與鐵人鍊成獎得獎名單
- 小財神來報告一下鐵人賽豐富的獎品與參賽報法囉
- 對於這次鐵人賽你認為哪些文章該被檢舉?
- 鐵人賽發表的文章,可以同時發佈在自己個人部落格上嗎?
- [RoR] Rails 環境建置及更新問題
- 鐵人賽
- [鐵人賽最後領獎通知]sanger、grundy40、singwang三位邦友快與小財神聯絡
- 鐵人賽4
- 鐵人賽6
- 鐵人賽 活動
- [RoR] 用 nginx 作為 RoR 的前端
- [RoR] YAML 的簡單用法










