gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章用Ruby进行CGI编程的入门指引由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

编写CGI脚本:

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

?
1
2
3
4
5
#!/usr/bin/ruby
 
puts "HTTP/1.0 200 OK"
puts "Content-type: text/html\n\n"
puts "<html><body>This is a test</body></html>"

如果调用这个脚本 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脚本:

?
1
2
3
4
5
6
7
#!/usr/bin/ruby
 
require 'cgi'
 
cgi = CGI . new
puts cgi.header
puts "<html><body>This is a test</body></html>"

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

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

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

?
1
2
3
4
5
6
#!/usr/bin/ruby
 
require 'cgi'
cgi = CGI . new
cgi[ 'FirstName' ] # => ["Zara"]
cgi[ 'LastName' ] # => ["Ali"]

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

?
1
2
3
4
5
6
7
#!/usr/bin/ruby
 
require 'cgi'
cgi = CGI . new
h = cgi.params # => {"FirstName"=>["Zara"],"LastName"=>["Ali"]}
h[ 'FirstName' ] # => ["Zara"]
h[ 'LastName' # => ["Ali"]

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

?
1
2
3
4
5
#!/usr/bin/ruby
 
require 'cgi'
cgi = CGI . new
cgi.keys     # => ["FirstName", "LastName"]

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

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

?
1
2
3
4
5
6
7
8
#!/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代码,就像这样:

?
1
2
3
4
5
6
7
8
9
10
11
< 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对象.

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/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.

这将产生以下结果:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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. 。

?
1
2
3
4
#!/usr/bin/ruby
 
require 'cgi'
puts CGI .escape(Zara Ali/ A Sweet & Sour Girl")

这将产生以下结果:

?
1
2
3
4
5
6
Zara+Ali% 2FA Sweet+% 26 +Sour+Girl")
 
#!/usr/bin/ruby
 
require 'cgi'
puts CGI .escapeHTML( '<h1>Zara Ali/A Sweet & Sour Girl</h1>' )

这将产生以下结果:

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

  。

最后此篇关于用Ruby进行CGI编程的入门指引的文章就讲到这里了,如果你想了解更多关于用Ruby进行CGI编程的入门指引的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com