CGI

CGI の設置方法

ディレクトリは /home/yot/public_html/test_cgi とする.

  • 下の内容の .htaccess を作成

    AddType application/x-httpd-cgi .cgi
  • 下の内容の test1.cgi を作成

    #!/usr/bin/ruby
    
    print "Content-type: text/html; charset=utf8\n"
    print "\n"
    print "<html>\n"
    print "<head>\n"
    print "<title>テスト</title>\n"
    print "</head>\n"
    print "<body>\n"
    print "これはCGIのテストです。\n"
    print "</body>\n"
    print "</html>\n"
  • あるいは, 下の内容の test1.cgi を作成

    • "<<" は「ヒアドキュメント」

      #!/usr/bin/ruby
      # coding: utf-8
      
      print <<~EOD
      Content-type: text/html; charset=utf8
      
      <!doctype html>
      <html lang="ja">
      <head>
        <meta charset="utf-8">
        <title>テスト</title>
      </head>
      <body>
        これはCGIのテストです。
      </body>
      </html>
      EOD

    注意

    Content-type: text/html; charset=utf8

    の次の空行は重要らしい.

  • test1.cgi のパーミッションを 755 に変更.
  • httpd.conf (/usr/local/apache2/conf/httpd.conf) に以下を追記.

    <Directory "/home/yot/public_html/test_cgi">
        Options +ExecCGI
    </Directory>

参考ページ

form を使う & ruby で入力を受け取る

  • 下の内容の test2.html を作成

    <!doctype html>
    <html lang="ja">
    <head>
      <meta charset="utf-8">
      <title>テスト</title>
    </head>
    <body>
      これは form のテストです。
    
      <form action="./test2.cgi" method="get">
    
        Value:
        <select name="value">
          <option value="x">x value</option>
          <option value="y">y value</option>
        </select>
    
        <br>
    
        名前: 
        <input type="text" name="name">
    
        <br>
    
        <input type="submit" value="送信">
      </form>
    </body>
    </html>
  • 下の内容の test2.cgi を作成

    #!/usr/bin/ruby
    # coding: utf-8
    require "cgi"
    
    input = CGI.new
    
    val  = input[ "value" ]
    name = input[ "name"  ]
    
    print "Content-type: text/html\n"
    print "\n"
    print "<html>\n"
    print "<head>\n"
    print "<title>Test page generated by cgi.</title>\n"
    print "</head>\n"
    print "<body>\n"
    print "input value = ", val, "\n"
    print "<br>\n"
    print "input name  = ", name, "\n"
    print "<br>\n"
    print "</body>\n"
    print "</html>\n"

構造としては, test2.html の form タグで値を選択/入力し, それを test2.cgi に 渡す. test2.cgi では, cgi モジュールで渡された値を取り出す.

メモ

コンボボックス

form

ruby でパラメータを受け取る