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




関連ページ



スポンサード リンク