萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 編程語言綜合 >> 用Ruby進行CGI編程的入門指引

用Ruby進行CGI編程的入門指引

   這篇文章主要介紹了用Ruby進行CGI編程的入門指引,編寫CGI腳本也是Ruby用於網絡編程的一項基礎功能,需要的朋友可以參考下

  編寫CGI腳本:

  最基本的Ruby CGI腳本看起來像這樣:

  ?

1 2 3 4 5 #!/usr/bin/ruby   puts "HTTP/1.0 200 OK" puts "Content-type: text/htmlnn" 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">
copyright © 萬盛學電腦網 all rights reserved