→ davidwu0123:結果是從CGI::cookie.new 到print cgi那六行要再寫一 11/02 15:47
→ davidwu0123:次才有辦法 總覺得這個寫法好冗長 也不是很懂原因 11/02 15:47
目前寫法如下,要的結果是弄出來了,但原理也沒完全弄懂。
初始化的階段:
require 'cgi'
cgi = CGI.new
cookies = cgi.cookies
#讀取cookie中勝、敗、平手次數,若讀取不到則為0
win = (cookies["p_win"][0]||0).to_i
even = (cookies["p_even"][0]||0).to_i
lose = (cookies["p_lose"][0]||0).to_i
#用來儲存勝、敗、平手次數的cookie
new_cookie=CGI::Cookie.new("name"=>"p_win","value"=>win.to_s)
new_cookie2=CGI::Cookie.new("name"=>"p_even","value"=>even.to_s)
new_cookie3=CGI::Cookie.new("name"=>"p_lose","value"=>lose.to_s)
#原因不明,不寫出以下三行就無法真正紀錄住cookie
print cgi.header("charset"=>"utf-8","cookie"=>[new_cookie])
print cgi.header("charset"=>"utf-8","cookie"=>[new_cookie2])
print cgi.header("charset"=>"utf-8","cookie"=>[new_cookie3])
然後是勝負判定及之後的處理:
case judge
when 'win' #刷新勝利次數的值,以下類推
win+=1
when 'lose'
lose+=1
when 'even'
even+=1
end
#將新的勝、敗、平手次數
new_cookie=CGI::Cookie.new("name"=>"p_win","value"=>win.to_s)
new_cookie2=CGI::Cookie.new("name"=>"p_even","value"=>even.to_s)
new_cookie3=CGI::Cookie.new("name"=>"p_lose","value"=>lose.to_s)
#同樣不寫這三行就無法成功
print cgi.header("charset"=>"utf-8","cookie"=>[new_cookie])
print cgi.header("charset"=>"utf-8","cookie"=>[new_cookie2])
print cgi.header("charset"=>"utf-8","cookie"=>[new_cookie3])
※ 編輯: davidwu0123 來自: 133.51.83.22 (11/02 15:56)
※ 編輯: davidwu0123 來自: 133.51.83.22 (11/02 15:56)