最簡 CGI 腳本
#!/usr/bin/ruby
puts "HTTP/1.0 200 OK"
puts "Content-type: text/html\n\n"
puts "This is a test"
使用 cgi.rb 函式庫
#!/usr/bin/ruby
require 'cgi'
cgi = CGI.new
puts cgi.header
puts "This is a test"
表單參數接收
# URL: /cgi-bin/test.cgi?FirstName=Zara&LastName=Ali
cgi['FirstName'] # => ["Zara"]
cgi['LastName'] # => ["Ali"]
# 取得所有參數 Hash
params = cgi.params # => {"FirstName"=>["Zara"], "LastName"=>["Ali"]}
params['FirstName'] # => ["Zara"]
# 多值欄位
cgi['name'] # => "Zara" (第一個)
cgi.params['name'] # => ["Zara", "Huma", "Nuha"]
HTML 標籤生成
require "cgi"
cgi = CGI.new("html4")
cgi.out {
cgi.html {
cgi.head { "\n" + cgi.title{"This Is a Test"} } +
cgi.body {
"\n" + cgi.form {
"\n" + cgi.hr + cgi.h1 { "A Form: " } +
"\n" + cgi.textarea("get_text") + "\n" +
cgi.br + cgi.submit
}
}
}
}
輸出 HTML 範例
Content-Type: text/html
Content-Length: 302
This Is a Test
URL 編碼與 HTML 逸出
require 'cgi'
puts CGI.escape("Zara Ali/A Sweet & Sour Girl")
# Zara+Ali%2FA+Sweet+%26+Sour+Girl
puts CGI.escapeHTML('Zara Ali/A Sweet & Sour Girl
')
# <h1>Zara Ali/A Sweet & Sour Girl</h1>