■
Rubyの勉強したいんですが、レベルが高すぎて理解不能。
とりあえず、KENTさんのASKA BBSをできるだけそのまま移植してみます。
今日はdecodeのところを。。。
質問するレベルにも達してなくて途方に暮れてます。
公開すれば親切な人が教えてくれるかと期待してます。
おかしいところや直したらいいところ教えてください。
ぼちぼちやりますんで、よろしくお願いします。
#!/usr/local/bin/ruby $maxData = 51200 $post_flag = 0 def decode buf = "" if ENV['REQUEST_METHOD'] == "POST" $post_flag = 1 if ENV['CONTENT_LENGTH'].to_i > $maxData error("投稿量が大きすぎます") end buf = gets # read(STDIN, buf, ENV['CONTENT_LENGTH']) 元はこれ。。。上だけでOKなの?? else $post_flag = 0 buf = ENV['QUERY_STRING'] end buf.split(/&/).each {|l| (key,val) = l.split(/=/) val = "" unless val key = key.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n) do [$1.delete('%')].pack('H*') end val = val.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n) do [$1.delete('%')].pack('H*') end.gsub(/&/, '&').gsub(/"/, '"').gsub(/>/, '>').gsub(/</, '<' ).gsub(/\r\n/,'<br>').gsub(/\r/,'<br>').gsub(/\n/,'<br>') # S-JISコード変換 # &jcode::convert(\$val, "sjis", "", "z"); これって必要?? if $in[key] $in[key] = $in[key] + "\0" + $in[key] else $in[key] = val end } end def error end $in = Hash.new decode print <<END_HTML Content-Type: text/html <HTML> <HEAD><TITLE>BBS test</TITLE></HEAD> <BODY> <H1>BBS test</H1> <form method="POST"> 名前:<input name="name" size="20"><br> 本文:<textarea name="comment" cols="40" rows="4"></textarea> <input type="submit" value="送信"> </form> <hr> <P>名前= #{$in['name']}</P> <P>本文= #{$in['comment']}</P> </BODY> </HTML> END_HTML