96 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 12:25:18 ] 不足なのなら順に説明すればいいんじゃね夏休み、と思ったが 1ページ目であっさり挫折した ttp://www.skuare.net/2007/06/ruby_1.html CGI の入力・出力構造は基本的に通常のスクリプトと変わらない ブラウザからのデータをサーバが解釈した環境変数 QUERY_STRING の中身が標準入力に既に入っていて 標準出力を行うとユーザーに送る HTML などのデータとみなされてサーバが一旦受け取るという違いしかない ただ、環境変数 QUERY_STRING を直接アクセスすることは今となってはまず無い たいていは適度に使いやすく変換してくれる肩代わりライブラリ、Ruby では標準添付の cgi 、を使う Web ブラウザは、HTML 上の送信ボタンが押されたときには、そのボタンを含む FORM 要素の INPUT 要素や TEXTAREA 要素の name 属性と value 属性をペアにしてまとめ、適当にエンコードしてサーバに送る 上記サイトでは HTML 上で value が省略されているが、普通にユーザーが入力すればその値が value としてサーバに送られる そして、サーバが受け取ったデータというのは通常 name1=値1&name2=値2… というようなひと連なりのテキストというか英数字記号の巨大な塊となっている これをいちいち安全かつ適切に自力分解復元するのは面倒だし不安なので、 cgi ライブラリにその仕事をやってもらう CGI.new とすると QUERY_STRING が読み込まれ、わかりやすく分解されて、[ ] メソッドで参照できるようになる たとえば HTML 上で name1 だった入力欄の値を利用したい場合は cgi = CGI.new cgi['name1'] とすればよい なお、標準出力はサーバが全て受け取るので、何かをユーザー向けに表示させたい場合は、 本来 Web サーバが行っていたことも全て自力でする必要がある(CGI はそういうふうになっている) HTML を表示したいのなら、 サーバが自動で行っていた Content-Type という HTTP ヘッダ等の表示も自前で行わなければならない print "Content-type: text/html\n\n" CGI#out のブロックで括るとこれを自動で行ってくれるのだが、まあそれは別の話