首页 > 编程 > Ruby > 正文

Ruby中CGI编程详细教程 新手入门必看

2020-02-24 15:40:47
字体:
来源:转载
供稿:网友

  下面小编给大家分享一篇ruby.html" target="_blank">Ruby中CGI编程的详细教程,感兴趣的朋友跟小编一起来了解一下吧!

  编写CGI脚本:

  最基本的Ruby CGI脚本看起来像这样:

  #!/usr/bin/ruby

  puts "HTTP/1.0 200 OK"

  puts "Content-type: text/html/n/n"

  puts "

This is a test

"

  如果调用这个脚本 test.cgi 上传到基于Unix/Linux的Web托管服务提供商并具有合适的权限,那么可以将它作为一个CGI脚本使用。

  例如,如果有一个Linux的Web托管服务提供商托管的网站,如:http://www.yiibai.com/test.cgi 的主目录,并给它执行权限,那么访问 http://www.yiibai.com/test.cgi 应该返回一个HTML页面显示:This is a test.

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

  使用 cgi.rb:

  Ruby有一个特殊的称为CGI库,使更复杂的交互相比前面的CGI脚本。

  让我们创建一个基本的CGI使用CGI脚本:

  #!/usr/bin/ruby

  require 'cgi'

  cgi = CGI.new

  puts cgi.header

  puts "

This is a test"

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

  表单处理:

  使用CGI类使可以访问HTML查询参数有两种方法。假设我们给出 /cgi-bin/test.cgi?FirstName=Zara&LastName=Ali.

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

  #!/usr/bin/ruby

  require 'cgi'

  cgi = CGI.new

  cgi['FirstName'] # => ["Zara"]

  cgi['LastName'] # => ["Ali"]

  还有另一种方法来访问这些表单变量。此代码会给出所有的项和值的哈希值:

  #!/usr/bin/ruby

  require 'cgi'

  cgi = CGI.new

  h = cgi.params # => {"FirstName"=>["Zara"],"LastName"=>["Ali"]}

  h['FirstName'] # => ["Zara"]

  h['LastName'] # => ["Ali"]

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

  #!/usr/bin/ruby

  require 'cgi'

  cgi = CGI.new

  cgi.keys # => ["FirstName", "LastName"]

  如果表单包含多个具有相同名称的字段,对应的值将被返回到脚本中为一个数组。[]存取器返回这些的只是第一个。

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

  #!/usr/bin/ruby

  require 'cgi'

  cgi = CGI.new

  cgi['name'] # => "Zara"

  cgi.params['name'] # => ["Zara", "Huma", "Nuha"]

  cgi.keys # => ["name"]

  cgi.params # => {"name"=>["Zara", "Huma", "Nuha"]}

  注:Ruby的会自动处理GET和POST方法。没有单独的处理这两种不同的方法。

  一个相关的,但基本形式,可以发送正确的数据,将有HTML代码,就像这样:

  

  

 

  

 

  First Name :

  

  Last Name :

  

  

 

  

  

  创建表单和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

  

  

  

  

  

  

 

  

 

  


 

  

A Form:

 

  

  

  

  

 

  

  

  引用字符串:

  当处理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('

Zara Ali/A Sweet & Sour Girl

')

 

  这将产生以下结果:

  

Zara Ali/A Sweet & Sour Girl

'

 

  以上就是Ruby中CGI编程的详细教程了,更多相关内容请继续关注武林技术频道。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选