Ruby-CGIでパラメータを受け取る
CGIでパラメータを受け取る
Ruby CGIライブラリ
RubyのCGIライブラリを利用します。
ブラウザから送られてきた"name"の値を(nameという変数に)取得できます。
require 'cgi'
cgi = CGI.new
name = cgi['name']
htmlから値を送信する。
formやアンカーからCGIに対してデータを送信することができます。
アンカーからパラメータを送信する。
htmlのアンカーをクエリーで記述します。
<a href="test.cgi?filename=text.txt">test</a>
rubyスクリプトは以下の通りです。
require "cgi"
cgi_data = CGI.new
filename = cgi_data["filename"]
formからパラメータを送信する。
<h3>ユーザ登録</h3>
<form method="post" action="/">
<table>
<tr>
<th>login-name</th>
<td><input value="" name="login_id" id="login_id" size="40" class="text" type="text" /></td>
</tr>
<tr>
<th>passward</th>
<td><input value="" name="login_pw" id="login_pw" size="40" class="password" type="password" /></td>
</tr>
<th>re-passward</th>
<td><input value="" name="login_pwr" id="login_pwr" size="40" class="password" type="password" /></td>
</tr>
</table>
<br />
<input type="submit" name="cmd" value="useradd"/>
</form>
rubyの実装は以下の通りです。
def useradd_process()
login_id = @cgi["login_id"]
login_pw = @cgi["login_pw"]
login_pwr = @cgi["login_pwr"]
if not(login_pw == login_pwr)
usrmgr.msg = "Was entered and re-entered password " +
"does not match the beginning."
else
#ユーザ追加処理
end
end
index.cgi実装例
エラー発生時に、HTMLにエラーの内容を出力します。
#!/usr/bin/env ruby
#/usr/local/bin/ruby
base_path = File.expand_path(File.dirname(__FILE__))
Dir.chdir(base_path)
$LOAD_PATH << File.dirname(__FILE__)
# coding: UTF-8
# Encoding.default_external = Encoding::UTF8_MAC
# Encoding.default_internal = Encoding::UTF_8
$KCODE = 'UTF-8'
require "cgi"
begin
cgi = CGI.new
# コンテンツを取得する
stw = STW::Engine.new( cgi )
contents = stw.compose()
# HTMLを表示する
html = STW::Html.new( HTML_TEMPLETE )
html.compose( cgi["tag"], contents )
html.output( cgi.header({"charset"=>"#{$KCODE}"}) )
rescue
# ログHTML出力
print( cgi.header({"charset"=>"#{$KCODE}"}) )
print( "*** CGI Error List ***<br />" )
print( "#{CGI.escapeHTML($!.inspect)}<br />" )
$@.each {|x| print CGI.escapeHTML(x), "<br />"}
end
関連ページ
- Ruby
- Ruby-ファイルロック
- Ruby-OpenSSL暗号化
- Ruby-zlibファイル圧縮
- Ruby-ハッシュを作成する
- Ruby-ログのローテーション
- Ruby-YAML形式ファイルを操作する
- Ruby-WEBrickでwebサーバ
- Ruby-CGIでパラメータを受け取る
- Ruby-CGIセッション