天天看點

Ruby CGI 程式設計

Ruby 是一門通用的語言,不僅僅是一門應用于WEB開發的語言,但 Ruby 在WEB應用及WEB工具中的開發是最常見的。

使用Ruby您不僅可以編寫自己的SMTP伺服器,FTP程式,或Ruby Web伺服器,而且還可以使用Ruby進行CGI程式設計。

接下來,讓我們花點時間來學習Ruby的CGI編輯。

為了更好的了解CGI是如何工作的,我們可以從在網頁上點選一個連結或URL的流程:

1、使用你的浏覽器通路URL并連接配接到HTTP web 伺服器。

2、Web伺服器接收到請求資訊後會解析URL,并查找通路的檔案在伺服器上是否存在,如果存在傳回檔案的内容,否則傳回錯誤資訊。

3、浏覽器從伺服器上接收資訊,并顯示接收的檔案或者錯誤資訊。

CGI程式可以是 Ruby 腳本,Python 腳本,PERL 腳本,SHELL 腳本,C 或者 C++ 程式等。

Ruby CGI 程式設計

在你進行CGI程式設計前,確定您的Web伺服器支援CGI及已經配置了CGI的處理程式。

Apache 支援CGI 配置:

設定好CGI目錄:

所有的HTTP伺服器執行CGI程式都儲存在一個預先配置的目錄。這個目錄被稱為CGI目錄,并按照慣例,它被命名為/var/www/cgi-bin目錄。

CGI檔案的擴充名為.cgi,Ruby 也可以使用 .rb 擴充名。

預設情況下,Linux伺服器配置運作的cgi-bin目錄中為/var/www。

如果你想指定其他運作CGI腳本的目錄,可以修改httpd.conf配置檔案,如下所示:

在 AddHandler 中添加 .rb 字尾,這樣我們就可以通路 .rb 結尾的 Ruby 腳本檔案:

最基本的 Ruby CGI 代碼如下所示:

你可以将該代碼保持到 test.cgi 檔案中,上次到伺服器并賦予足夠權限,即可作為 CGI 腳本執行。

如果你站的的位址為http://www.example.com/ ,即可用過http://www.example.com/test.cgi 通路該程式,輸出結果為: "This is a test."。

浏覽器通路該網址後,Web 伺服器會在站點目錄下找到 test.cgi檔案,然後通過Ruby解析器來解析腳本代碼并通路HTML文檔。

Ruby 可以調用 CGI 庫來編寫更複雜的CGI腳本。

以下代碼調用了 CGI 庫來建立一個腳本的CGI腳本。

以下代碼中,建立了CGI 對象并列印頭部資訊。

使用CGI庫可以通過兩種方式擷取表單送出(或URL中的參數)的資料,

例如URL:/cgi-bin/test.cgi?FirstName=Zara&LastName=Ali。

你可以使用 CGI#[] 來直接擷取參數FirstName和LastName:

另外一種擷取表單資料的方法:

以下代碼用于檢索所有的鍵值:

如果表單包含了多個相同名稱的字段,則該相同字段的值将儲存在數組中。

以下執行個體中,指定表單中三個相同的字段"name",值分别為 "Zara", "Huma" 和 "Nuha":

注意:Ruby 會自動判斷 GET 和 POST 方法,是以無需對兩種方法差別對待。

以下是相關的HML代碼:

CGI 包含了大量的方法來建立 HTML,每個HTML标簽都有相對應的方法。

在使用這些方法前,比必須通過 CGI.new 來建立 CGI 對象。

為了使标簽的嵌套更加的簡單,這些方法将内容作為了代碼塊,代碼塊将傳回字元串作為标簽的内容。如下所示:

當你在處理 URL 中的參數或者 HTML 表單資料時,需要對指定的特殊字元進行轉義,如:引号("),反斜杠(/)。

Ruby CGI 對象提供了CGI.escape 和 CGI.unescape 方法來處理這些特殊字元的轉義:

以上代碼執行結果如下:

另一組執行個體:

以下是Ruby中完整的CGI類的相關方法

Ruby CGI - 标準 CGI 庫相關方法

Ruby CGI Cookies - 如何處理 CGI Cookies.

Ruby CGI Sessions - 如何處理 CGI sessions.