CGIについて(実習)

1 準備のサーバ設定

2 簡単なCGIプログラム

  1. 前提:

  2. テキストを生成するだけのコード

    #!/usr/bin/ruby
    puts 'Content-type: text/plain' ; puts
    puts '読めますか'
  3. 動作実験、と転送、と置き場所(転送先)

  4. HTMLを生成するコード

    #!/usr/bin/ruby
    puts 'Content-Type: text/html; charset=UTF-8' ; puts
    html=<<'EOF'
    <!doctype html>
    <h1>おためしページ</h1>
    <p>読めるかどうかためしてみよう</p>
    EOF
    puts html
  5. パラメータを(HTTPのPUTメソッドで)受け取るコード(の、準備)

  1. パラメータを使う
    1. 分割

      p qs=ENV['QUERY_STRING'].split('&')   # 配列の形になる
      p pm=Hash[*qs.map{|q|q.split('=')}.flatten]

      これでHash(連想配列)の形になる(前期ライブラリのcgi.paramsも同様)。

    2. デコード

      前項の方法に代わるものとして、ライブラリ uri の機能を使う方法もある (URLデコードは任せられる)。

      require 'uri'
      p pms=URI.decode_www_form(ENV['QUERY_STRING'])
      p pm=Hash[*pms.flatten]
      p v=pm['v']   # 文字列が前提なのでHashの値をそのまま使う
      p n=pm['n'].to_i  # 整数としてデコード
    3. 使う

      #!/usr/bin/ruby
        # ここに前述のコードが(重複は整理して)入る
      puts 'Content-Type: text/html; charset=UTF-8'; puts
        # ここからHTML出力部
      puts '<!doctype html>'
      # 指定された文字列を指定回数出力
      n.times do 
        puts "#{v}<br>"
      end
      puts '<a href="#" onclick="history.go(-1);return false">戻る</a>'

      今日はここまで。

      板書図:

      板書図