rails實現驗證碼

2021-09-23 16:41:51 字數 2323 閱讀 4255

網上其實有一大堆這樣的資料了,我再寫也沒多大價值,談下幾個注意點吧。

1.在windows上安裝rmagic,如果你是通過gem安裝的,

require 

'rmagic

' 要修改為:

require 

'rubygems

'require 

'rmagick

' 才能正確引入。

2.網上那個例子,畫布是使用rmagic內建的影象格式,rmagic內建的影象格式還有:

gradient*

梯度,比如gradient:red-blue

granite

花崗石,比如:"granite:".

logo

logo型的影象. 如:"logo:",後面會多顯示乙個五角星^_^

netscape

非常漂亮的彩條。如:"netscape:"

null*

空白 使用方式:"null:"

rose

玫瑰 使用方式 :"rose:"

xc*設定乙個背景色,比如"xc:green"

乙個修改的例子,在rails的models下存為noisy_image.rb,在controller就可以這樣呼叫noisyimage.new(6) :

require 'rubygems'

require 

'rmagick

'class

noisyimage

include magick

attr_reader :code, :code_image

jiggle =15

wobble =15

definitialize(len)

chars =(

'a'..

'z').to_a -[

'a',

'e',

'i',

'o',

'u']

code_array=

1.upto(len) 

granite 

=magick::imagelist.new(

'xc:#edf7e7')

canvas 

=magick::imagelist.new

canvas.new_image(32*

len, 

50, magick::texturefill.new(granite))

text 

=magick::draw.new

text.font_family ='

times

'text.pointsize =40

cur =10

code_array.each

cur 

+=30

}@code 

=code_array.to_s

@code_image 

=canvas.to_blob

endend

3.與rails應用的結合,和一般的驗證碼原理一樣,將產生的隨機數儲存在session或者request範圍內,提交的時候進行比較驗證即可。比如產生的時候將隨機字母儲存在session[:code]中:

session[:noisy_image] 

=noisyimage.new(6)

session[:code] 

=session[:noisy_image].code

驗證的時候,比較提交的type_code與session[:code]即可,為了安全性考慮,最好還是不考慮使用客戶端驗證。

unless session[:code]

==params[:

type_code]

flash[:notice]='

驗證碼填寫錯誤,請重新註冊,謝謝!

'return

redirect_to :action

=>

:new  

end

defcode_image

image 

=session[:noisy_image].code_image

send_data image, :type 

=>

'image/jpeg

', :disposition 

=>

'inline

'end

<

img height='

30'src=

"/test/code_image

">

文章**莊周夢蝶  ,原文發布時間5.17

驗證碼實現

1.gd庫 2.建立影象步驟 1 建立畫布 就是在記憶體中開闢一塊臨時區域,用於儲存圖影象資訊 2 繪製影象 使用各種函式設定影象顏色,背景,填充畫筆,繪製圖形等 3 輸出圖形 以某種格式儲存到伺服器或者輸出到瀏覽器顯示給使用者。注意 直接輸出之前一定要用header 告訴瀏覽器以影象格式來處理該輸...

php驗證碼zhuc php實現驗證碼製作

php實現驗證碼製作 首先,看一張圖了解驗證碼生成的過程。1 生成驗證碼底圖 2 驗證碼內容 3 生成驗證碼 4 對比校驗 驗證碼實現的核心技術分析 a 底圖的 實現,並新增干擾元素 b 生成驗證內容 c 驗證內容儲存在服務端 d 驗證內容的校驗 下面看 實現的過程 這段 實現了產生 隨機數字,隨機...

PHP實現驗證碼

目前,不少 為了防止使用者利用機械人自動註冊 登入 灌水,都採用了驗證碼技術。所謂驗證碼,就是將一串隨機產生的數字或符號,生成一幅,裡加上一些干擾象素 防止 ocr 由使用者肉眼識別其中的驗證碼資訊,輸入表單提交 驗證,驗證成功後才能使用某項功能。我們這裡展示了如何編寫 php程式實現驗證碼功能 一...