セッションの使い方
セッション変数書き込み
require "cgi"
require "cgi/session"
ses = CGI.new
session = CGI::Session::new(ses)
#セッション変数に値を代入
session['user_id'] = "kazan"
print input.header("type" => "text/html","charset" => "euc-jp")
Rubyの場合、セッションを書き込む際に、ヘッダを出力するので、そのまま Location でリダイレクトさせると、値を保持してくれない。リダイレクトさせる場合は以下のようにする
#==============だめな例====================
require "cgi"
require "cgi/session"
ses = CGI.new
session = CGI::Session::new(ses)
session['user_id'] = "kazan"
print input.header("type" => "text/html","charset" => "euc-jp")
print "Status: ", (ENV['SERVER_PROTOCOL'] == "HTTP/1.1" ? "303" : "302"), "\n"
print "Location: index.html\n\n"
#==============よい例====================
require "cgi"
require "cgi/session"
ses = CGI.new
session = CGI::Session::new(ses)
session['user_id'] = "kazan"
print input.header("type" => "text/html","charset" => "euc-jp")
print <<EOF
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=Shift_JIS">
<META HTTP-EQUIV="Refresh" content="0;URL=index.html">
<TITLE>Session</TITLE>
</HEAD>
<BODY>
リダイレクト
</BODY>
</HTML>
EOF
セッション変数読み込み
require "cgi"
require "cgi/session"
ses = CGI.new
session = CGI::Session::new(ses)
#セッション変数に値を代入
user_id = session['user_id']