基本編
(1)セッションID(デフォルト値)を送信するCGI
CGI Cookieを利用する.
(i)CookieはPATHが一致しないとブラウザが送信してくれないので、cookieの"path"の値に注意する.
デフォルトは発信したフォルダ.
(ii)cookieはHeaderで単純送信
#!/usr/local/bin/ruby #coding: utf-8 require 'cgi' cookie1=CGI::Cookie.new({"name" => "JSESSIONID" ,"value"=>"123456","path"=>"xxxx"}) filename="../../html/xxxxx/yyyy.html" puts "Content-type: text/html" puts "Set-Cookie: #{cookie1.to_s}" puts "" puts File.read(filename)
ユーザー名を返す
(1)クッキーから前回のセッションIDを取得
(2)前回のセッションIDからユーザー名をデータベースから取得(なければユーザー名を発行)
(3)新しいセッションIDを発行
(4)データベースを新しいセッションIDに更新する.
(5)新しいセッションIDをクッキーとして送信.
終了.
*データベース(renew.sqlite3)
user_session(user_id,session_id)
#!/usr/local/bin/ruby #coding: utf-8 require 'cgi' require 'sqlite3' cgi=CGI.new() def error_cgi print "Content-Type:text/html;charset=EUC\n\n" print "*** CGI Error List ***<br />" print "#{CGI.escapeHTML($!.inspect)}<br />" $@.each {|x| print CGI.escapeHTML(x), "<br />"} end begin session_id=(cgi.cookies["JSESSIONID"][0]).to_s if session_id.length == 0 then session_id="-1" end db=SQLite3::Database.new("renew.sqlite3") new_session_id=Time.now.to_i.to_s cookie1=CGI::Cookie.new({"name" => "JSESSIONID" ,"value"=>new_session_id,"path"=>"cgi-bin/xxxx"}) q=db.execute("select * from user_session where session_id=\"#{session_id}\";") if q.length==0 then user_id=(db.execute("select user_id from user_session").map{|i| i[0].to_i}.max+1).to_s; db.execute("insert into user_session(user_id,session_id) values('#{user_id}','#{new_session_id}');") else user_id=db.execute("select user_id from user_session where session_id='#{session_id}';")[0][0] db.execute("update user_session set user_id='#{user_id}',session_id='#{new_session_id}' where user_id='#{user_id}';") end user_id=db.execute("select user_id from user_session where session_id='#{new_session_id}';")[0][0] puts "Content-type: text/html" puts "Set-Cookie: #{cookie1.to_s}" puts "" puts "You are #{user_id}" puts new_session_id db.colse() end
解析結果をtableに吐く.
idを特定して結果をtableにみにいき、table内容を表示する ajax