RubyでCGIスクリプトを作る下準備・フォームデータを受け取る・改
前回 http://d.hatena.ne.jp/BeForU/20040628#p2 の改良。
GETとPOSTの両方に対応。
将来、掲示板スクリプトに使えるように"<"や">"を置き換える。
def tag(str) str.gsub!("&", "&") str.gsub!("<", "<") str.gsub!(">", ">") str.gsub!("\"", """) str.gsub!("\x0d\x0a", "\x0a") str.gsub!("\x0d", "<br>") str.gsub!("\x0a", "<br>") str end # コンソール上のデバッグ用に環境変数をセット #ENV['QUERY_STRING'] = "a=%A5%C6%A5%B9%A5%C8&b=t+e%0As+t" #ENV['CONTENT_LENGTH'] = "30" #ENV['REQUEST_METHOD'] = "GET" def decode(method) require "kconv" $input = {} if method == "GET" buf = ENV['QUERY_STRING'] elsif method == "POST" buf = STDIN.read ENV['CONTENT_LENGTH'].to_i end if buf == nil return end buf.split("&").each { |str| key = str.split("=")[0] value = str.split("=")[1] if value != nil value.tr!("+", " ") value.gsub!(/%([0-9a-fA-F]{2})/) { [$1.hex].pack("C") } value = value.toeuc # 文字コードはEUC value = tag(value) $input[key] = value end } end