用Ruby进行CGI编程的入门指引

2019-09-25 09:42:49王冬梅

创建表单和HTML:

CGI包含大量的方法用于创建HTML。会发现每个标签的方法之一。为了使这些方法,必须通过调用CGI.new创建一个CGI对象。

为了使标签更容易嵌套,这些方法拿自己的内容作为代码块。代码块返回一个字符串,这将在作为标签的内容。例如:

#!/usr/bin/ruby

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
     }
   }
  }
}

注:CGI类的方法可以接受的方法参数,这将设置HTTP方法(GET,POST等)上使用的表单提交。缺省情况下,在这个例子中使用的是POST。

这将产生以下结果:

Content-Type: text/html
Content-Length: 302
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Final//EN">
<HTML>
<HEAD>
<TITLE>This Is a Test</TITLE>
</HEAD>
<BODY>
<FORM METHOD="post" ENCTYPE="application/x-www-form-urlencoded">
<HR>
<H1>A Form: </H1>
<TEXTAREA COLS="70" NAME="get_text" ROWS="10"></TEXTAREA>
<BR>
<INPUT TYPE="submit">
</FORM>
</BODY>
</HTML>

引用字符串:

当处理URL和HTML代码,您必须谨慎地引用一些字符。例如,一个斜杠字符(/)在URL中具有特殊的意义,所以它必须被转义,如果它不是部分路径名。

例如,/查询URL部分将被翻译成字符串%2F/,使用它时必须翻译。空间和与符号特殊字符。为了处理这个问题,CGI提供:在例行程序 CGI.escape 和 CGI.unescape.

#!/usr/bin/ruby

require 'cgi'
puts CGI.escape(Zara Ali/A Sweet & Sour Girl")

这将产生以下结果:

Zara+Ali%2FA Sweet+%26+Sour+Girl")

#!/usr/bin/ruby

require 'cgi'
puts CGI.escapeHTML('<h1>Zara Ali/A Sweet & Sour Girl</h1>')

这将产生以下结果:

<h1>Zara Ali/A Sweet & Sour Girl</h1>'