亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Ruby > 正文

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

2020-10-29 19:39:36
字體:
來源:轉載
供稿:網友

編寫CGI腳本:

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

#!/usr/bin/rubyputs "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/rubyrequire 'cgi'cgi = CGI.newputs cgi.headerputs "<html><body>This is a test</body></html>"

在這里,創建了一個CGI對象,并用它來打印標題行。
表單處理:

使用CGI類使可以訪問HTML查詢參數有兩種方法。假設我們給出 /cgi-bin/test.cgi?FirstName=Zara&LastName=Ali.

可以訪問參數FirstName和LastName使用CGI#[]如下:

#!/usr/bin/rubyrequire 'cgi'cgi = CGI.newcgi['FirstName'] # => ["Zara"]cgi['LastName'] # => ["Ali"]

還有另一種方法來訪問這些表單變量。此代碼會給出所有的項和值的哈希值:

#!/usr/bin/rubyrequire 'cgi'cgi = CGI.newh = cgi.params # => {"FirstName"=>["Zara"],"LastName"=>["Ali"]}h['FirstName'] # => ["Zara"]h['LastName']  # => ["Ali"]

以下是代碼來檢索所有的鍵:

#!/usr/bin/rubyrequire 'cgi'cgi = CGI.newcgi.keys     # => ["FirstName", "LastName"]

如果表單包含多個具有相同名稱的字段,對應的值將被返回到腳本中為一個數組。[]存取器返回這些的只是第一個。

在這個例子中,假設名為“name”的表單有三個字段,我們輸入了三個名字 "Zara", "Huma" and "Nuha":

#!/usr/bin/rubyrequire 'cgi'cgi = CGI.newcgi['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/rubyrequire "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/htmlContent-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/,使用它時必須翻譯??臻g和與符號特殊字符。為了處理這個問題,CGI提供:在例行程序 CGI.escape 和 CGI.unescape.

#!/usr/bin/rubyrequire 'cgi'puts CGI.escape(Zara Ali/A Sweet & Sour Girl")

這將產生以下結果:

Zara+Ali%2FA Sweet+%26+Sour+Girl")#!/usr/bin/rubyrequire 'cgi'puts CGI.escapeHTML('<h1>Zara Ali/A Sweet & Sour Girl</h1>')

這將產生以下結果:

&lt;h1&gt;Zara Ali/A Sweet & Sour Girl&lt;/h1&gt;'

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人一区二区电影| www.欧美三级电影.com| 97成人精品视频在线观看| 精品一区电影国产| 亚洲aⅴ日韩av电影在线观看| 日韩美女视频免费在线观看| 国产精品视频不卡| 久久成人精品一区二区三区| 日韩一中文字幕| 日韩高清a**址| 欧美黑人极品猛少妇色xxxxx| 精品久久久在线观看| 欧美在线观看一区二区三区| 久久999免费视频| 久久久亚洲欧洲日产国码aⅴ| 97超碰色婷婷| 亚洲一区二区三区视频| 中文字幕欧美精品在线| 精品综合久久久久久97| 亚洲精品一区二区三区婷婷月| 成人精品久久av网站| 亚洲第一区中文99精品| 国产精品欧美激情在线播放| 国产精品福利小视频| 中文字幕在线日韩| 中文字幕在线国产精品| 国产精品久久久久久亚洲影视| 不卡伊人av在线播放| 日韩成人小视频| 日韩欧美中文在线| 在线视频免费一区二区| 日韩影视在线观看| 日韩精品在线看| 国产精品视频导航| 国产欧美久久一区二区| 日韩电影免费观看在线| 日韩av高清不卡| 国产成人精品在线| 日韩视频第一页| 久久亚洲精品视频| 久精品免费视频| 久久精品国产2020观看福利| 国产亚洲精品一区二555| 亚洲专区在线视频| 国产日本欧美一区| 隔壁老王国产在线精品| 国产成人在线精品| 97视频免费在线看| 亚洲精品国产拍免费91在线| 国产成人a亚洲精品| 久久九九有精品国产23| 国产精品久久久久91| 欧美色另类天堂2015| 91精品国产高清久久久久久久久| 成人免费看黄网站| 尤物九九久久国产精品的特点| 性欧美xxxx视频在线观看| 亚洲2020天天堂在线观看| 欧美猛交免费看| 68精品国产免费久久久久久婷婷| 成人性生交大片免费看视频直播| 日韩av电影在线免费播放| 国产精品久久97| 欧美老女人性视频| 国产在线视频一区| 精品中文字幕乱| 欧美精品18videos性欧| 亚洲小视频在线| 日韩亚洲一区二区| 成人激情视频在线播放| 色偷偷噜噜噜亚洲男人的天堂| 人妖精品videosex性欧美| 精品自拍视频在线观看| 亚洲情综合五月天| 福利视频第一区| 久久久久成人网| 欧美成年人视频| 国产精品三级网站| 亚洲精品动漫100p| 欧美性少妇18aaaa视频| 久久精视频免费在线久久完整在线看| 色午夜这里只有精品| 亚洲成人性视频| 中文字幕日韩综合av| 国产欧美精品日韩| 日韩**中文字幕毛片| 韩国美女主播一区| 欧美猛交ⅹxxx乱大交视频| 国产成人在线亚洲欧美| 欧美黄色免费网站| 精品偷拍一区二区三区在线看| 欧美精品情趣视频| 成人在线视频福利| 91在线视频成人| 精品国产自在精品国产浪潮| 国产精自产拍久久久久久| 亚洲精品日产aⅴ| 欧美一区二区三区图| 91在线观看欧美日韩| 懂色av中文一区二区三区天美| 国产精品成人观看视频国产奇米| 日韩美女在线播放| 亚洲最大的成人网| 亚洲码在线观看| 欧美精品在线免费观看| 亚洲老头同性xxxxx| 国产在线高清精品| 亚洲欧美日韩久久久久久| 欧美午夜精品久久久久久人妖| 九九热r在线视频精品| 欧美精品video| 欧美电影免费播放| 日韩精品在线观| 欧美日韩加勒比精品一区| 日韩在线中文字幕| 日本精品久久中文字幕佐佐木| 久久伊人精品一区二区三区| 久久久精品视频在线观看| 日本亚洲欧洲色α| 人人做人人澡人人爽欧美| 亚洲精品久久久久中文字幕欢迎你| 亚洲另类激情图| 国产精品美女呻吟| 欧美国产第二页| 欧美日韩激情视频8区| 国产精品伦子伦免费视频| 日产精品久久久一区二区福利| 日韩av快播网址| 久久精品国产视频| 中文字幕日韩欧美在线视频| 久久久99免费视频| 日韩欧美成人网| 欧美超级免费视 在线| 欧美日韩国产中文字幕| 国产亚洲欧美日韩美女| 国产成人精品日本亚洲专区61| 欧美激情奇米色| 综合网日日天干夜夜久久| 亚洲天堂一区二区三区| 国产成人亚洲综合91| 成人中文字幕+乱码+中文字幕| 国产精品96久久久久久| 国产精品视频一| 日韩电影免费观看在线观看| 欧美资源在线观看| 国产精品第一区| 亚洲自拍av在线| 久久精品国产亚洲一区二区| 欧美一级电影免费在线观看| 亚洲护士老师的毛茸茸最新章节| 久久国内精品一国内精品| 国产精品黄视频| 亚洲精品久久7777777| 欧美亚洲视频一区二区| 91网站在线看| 成人美女免费网站视频| 色噜噜国产精品视频一区二区| 超薄丝袜一区二区| 国产精品91久久久久久| 国产精品视频区| 欧美精品videos| 久久久噜噜噜久久中文字免| 日韩美女免费视频| 亚洲一二三在线|