• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    用Ruby进行CGI编程的入门指引

    编写CGI脚本:

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

    #!/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脚本:

    #!/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=ZaraLastName=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代码,就像这样:

    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对象。

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

    #!/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>')
    
    

    这将产生以下结果:

    lt;h1gt;Zara Ali/A Sweet  Sour Girllt;/h1gt;'
    
    

    您可能感兴趣的文章:
    • 如何用C写一个web服务器之GCC项目编译
    • 如何用C写一个web服务器之I/O多路复用
    • 如何用C写一个web服务器之基础功能
    • 基于Python_脚本CGI、特点、应用、开发环境(详解)
    • 编写Python CGI脚本的教程
    • perl的cgi高级编程介绍
    • 如何用C写一个web服务器之CGI协议
    上一篇:举例初步讲解Ruby中的正则表达式
    下一篇:在Ruby中利用Net::SMTP类发送电子邮件的教程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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