新彩天欢迎您!
幻海优品

Ruby Web应用程序 - CGI编程

Ruby是一种通用语言;它根本不能称为网络语言.即便如此,Web应用程序和Web工具通常也是Ruby的最常见用途.

您不仅可以在Ruby中编写自己的SMTP服务器,FTP守护程序或Web服务器,还可以你也可以使用Ruby来完成更常见的任务,比如CGI编程或替代PHP.

请花几分钟时间用 CGI编程教程,了解有关CGI编程的更多细节.

编写CGI脚本

最基本的Ruby CGI脚本如下所示;

#!/usr/bin/rubyputs "HTTP/1.0 200 OK"puts "Content-type: text/html\n\n"puts "<html><body>This is a test</body></html>"

如果您调用此脚本 test.cgi 并将其上传到具有正确权限的基于Unix的Web托管服务提供商,可以将它用作CGI脚本.

例如,如果你有网站 https://www.example.com/托管Linux Web托管服务提供商,然后将 test.cgi 上传到主目录并赋予其执行权限,然后访问 https://www.example.com/test.cgi 应该返回一个HTML页面,上面写着 这是一个测试 .

这里当从Web浏览器请求 test.cgi 时,Web服务器看起来对于网站上的 test.cgi ,然后使用Ruby解释器执行它. Ruby脚本返回一个基本的HTTP头,然后返回一个基本的HTML文档.

使用cgi.rb

Ruby带有一个名为

让我们创建一个使用cgi&minus的基本CGI脚本;

#!/usr/bin/rubyrequire 'cgi'cgi = CGI.newputs cgi.headerputs "<html><body>This is a test</body></html>"

在这里,您创建了一个CGI对象并用它来打印标题行.

表单处理

使用类CGI可以通过两种方式访问HTML查询参数.假设我们的URL为/cgi-bin/test.cgi?FirstName = Zara& LastName = Ali.

您可以访问参数 FirstName LastName 直接使用CGI#[]如下 :

#!/usr/bin/rubyrequire 'cgi'cgi = CGI.newcgi['FirstName'] # =>  ["Zara"]cgi['LastName']  # =>  ["Ali"]

还有另一种方法可以访问这些表单变量.此代码将为您提供所有键和值的哈希值 :

#!/usr/bin/rubyrequire 'cgi'cgi = CGI.newh = cgi.params  # =>  {"FirstName"=>["Zara"],"LastName"=>["Ali"]}h['FirstName']  # =>  ["Zara"]h['LastName']   # =>  ["Ali"]

以下是检索所有键的代码 :

#!/usr/bin/rubyrequire 'cgi'cgi = CGI.newcgi.keys         # =>  ["FirstName", "LastName"]

如果表单包含多个具有相同名称的字段,则相应的值将作为数组返回给脚本. []访问器只返回这些中的第一个.索引params方法的结果以获取它们.

在这个例子中,假设表单有三个名为"name"的字段,我们输入了三个名字"Zara","Huma"和"Nuha" :

#!/usr/bin/rubyrequire 'cgi'cgi = CGI.newcgi['name']        # => "Zara"cgi.params['name'] # => ["Zara", "Huma", "Nuha"]cgi.keys           # => ["name"]cgi.params         # => {"name"=>["Zara", "Huma", "Nuha"]}

注意 :  Ruby将自动处理GET和POST方法.对于这两种不同的方法没有单独的处理方法.

可以发送正确数据的相关但基本的表单将具有类似于&minus的HTML代码;

<html>   <body>      <form method = "POST" action = "http://www.example.com/test.cgi">         First Name :<input type = "text" name = "FirstName" value = "" />         <br />         Last Name :<input type = "text" name = "LastName" value = "" />          <input type = "submit" value = "Submit Data" />      </form>   </body></html>

创建表单和HTML

CGI包含大量用于创建HTML的方法.你会发现每个标签有一种方法.为了启用这些方法,您必须通过调用CGI.new来创建CGI对象.

为了使标记嵌套更容易,这些方法将其内容作为代码块.代码块应返回 String ,它将用作标记的内容.例如 :

#!/usr/bin/rubyrequire "cgi"cgi = CGI.new("html4")cgi.out {   cgi.html {      cgi.head { "\n"&plus;cgi.title{"This Is a Test"} } &plus;      cgi.body { "\n"&plus;         cgi.form {"\n"&plus;            cgi.hr &plus;            cgi.h1 { "A Form: " } &plus; "\n"&plus;            cgi.textarea("get_text") &plus;"\n"+            cgi.br +            cgi.submit         }      }   }}

注意 :  CGI类的 form 方法可以接受方法参数,该方法参数将设置要在表单提交上使用的HTTP方法(GET,POST等).此示例中使用的默认值为POST.

这将产生以下结果 :

Content-Type: text/htmlContent-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/rubyrequire 'cgi'puts CGI.escape(Zara Ali/A Sweet & Sour Girl")

这将产生以下结果 :

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


#!/usr/bin/rubyrequire 'cgi'puts CGI.escapeHTML('<h1>Zara Ali/A Sweet & Sour Girl</h1>')

这将产生以下结果 :

&lt;h1&gt;Zara Ali/A Sweet & Sour Girl&lt;/h1&gt;'

CGI类中的有用方法

这是列表与CGI类相关的方法 :

  • Ruby CGI  : 与标准CGI库相关的方法.

Cookie和会话

我们已经解释了这两个概念在不同的部分.请遵循以下部分 :

  • Ruby CGI Cookies  : 如何处理CGI Cookies.

  • Ruby CGI会话 &减去;如何管理CGI会话.

虚拟主机服务器

您可以查看以下主题互联网在基于Unix的服务器上托管你的网站 :

  • 基于Unix的虚拟主机

免责声明:以上内容(如有图片或视频亦包括在内)有转载其他网站资源,如有侵权请联系删除