RubyのCGIプログラミング
Rubyは、WebアプリケーションとWebツール最も一般的であるだけではなくWEB開発言語で使用されるものが、Ruby開発普遍的な言語です。
だけでなく、あなた自身のSMTPサーバ、FTPプログラム、またはRubyのWebサーバを書くためのRubyを使用することができるだけでなく、RubyのCGIプログラミングを使用することができます。
編集のRuby CGIを学ぶために時間を割いてみましょう。
ウェブ閲覧
より良いCGIがどのように機能するかを理解するためには、プロセスのウェブページやURLのリンクをクリックすることができます:
- 1、URLにアクセスして、HTTP Webサーバーに接続するには、ブラウザを使用しています。
- 2、Webサーバは要求メッセージがURLを解析され、ファイルの内容を返すことがある場合、存在する場合、サーバー上でアクセスされたファイルを見て、それ以外の場合はエラーメッセージを返しますされます受け取ります。
- 図3に示すように、ブラウザがサーバから情報を受信し、受信したファイルまたはエラーメッセージを表示します。
CGIプログラムは、Rubyスクリプト、Pythonスクリプト、PERLスクリプト、シェルスクリプト、CまたはC ++プログラムすることができます。
CGIチャート
Webサーバーの設定とサポート
あなたはCGIプログラミングを行う前に、ご使用のWebサーバーがCGIやCGIハンドラをサポートするように構成されていることを確認してください。
ApacheはCGIの設定をサポートしています。
CGIディレクトリを設定します。
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
CGIプログラムを実行するすべてのHTTPサーバは、予め設定されたディレクトリに格納されています。 このディレクトリには、CGIディレクトリと呼ばれ、慣習によって、それは、/ var / www /のcgi-binディレクトリという名前です。
CGIファイルは、拡張子.cgiの、Rubyはまた、.RB拡張子を使用することができます。
デフォルトでは、のcgi-binディレクトリを実行するLinuxサーバーの設定は、は/ var / WWWのです。
あなたはCGIスクリプトを実行するために別のディレクトリを指定したい場合は、次のようにhttpd.confの設定ファイルを変更することができます。
<Directory "/var/www/cgi-bin"> AllowOverride None Options +ExecCGI Order allow,deny Allow from all </Directory>
私たちはRubyのスクリプトファイルの.RB終わりにアクセスできるように、.RBサフィックスのAddHandlerを追加します。
AddHandler cgi-script .cgi .pl .rb
CGIスクリプトを書きます
基本的なRubyのCGIのコードを次のように
#!/usr/bin/ruby puts "Content-type: text/html\n\n" puts "<html><body>This is a test</body></html>"
あなたはCGIスクリプトとして実行するための十分な権限を付与するために、ファイルサーバと最後をtest.cgiするコードを維持することができます。
あなたがhttp://www.example.com/のように立っアドレス、http://www.example.com/test.cgiは、プログラムにアクセスするために使用される場合、出力は次のようになります。「これはテストです。 "。
Webサイトにアクセスするには、ブラウザ、Webサーバーは、サイトディレクトリ内のtest.cgiファイルを見つけるだろうし、その後、HTMLドキュメントにアクセスすることにより、Rubyインタプリタやスクリプトコードを解決するために。
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ライブラリを使用するとURLなど、データの(URLまたはパラメータ)フォームを送信するには、2つの方法で得ることができる:? /cgi-bin/test.cgi姓=ザラ&姓=アリ。
あなたは[]直接パラメータ姓と名を得るの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"]
フォームが同じ名前を持つ複数のフィールドが含まれている場合、同じフィールドの値が配列に格納されます。
次の例では、3つの同一のフィールド「名前」、「ザラ」、「フーマー "と" 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メソッドを決定する2つの方法を区別する必要はありません。
ここでは、関連するHMLコードは次のとおりです。
<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タグが対応するメソッドを持って、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 } } } }
文字列エスケープ
あなたは、URL内のパラメータまたはHTMLフォームデータを扱っているときは、次のようなエスケープ特殊文字、指定する必要があります。引用符( ")、スラッシュ(/)。
RubyのCGIオブジェクトは、これらの特殊文字のエスケープに対処するためCGI.escape CGI.unescapeおよび方法を提供します:
#!/usr/bin/ruby require 'cgi' puts CGI.escape(Zara Ali/A Sweet & Sour Girl")
次のように上記のコードが実行されます。
#!/usr/bin/ruby require 'cgi' puts CGI.escape(Zara Ali/A Sweet & Sour Girl")
例の別のセット:
#!/usr/bin/ruby require 'cgi' puts CGI.escapeHTML('<h1>Zara Ali/A Sweet & Sour Girl</h1>')
次のように上記のコードが実行されます。
<h1>Zara Ali/A Sweet & Sour Girl</h1>'
CGIクラスのメソッドは、一般的に使用されます
ここではRubyのCGIクラスの完全な方法であります
- CGIルビー -標準CGIライブラリーに関連するメソッド
クッキーとセッション
- CGIのクッキーのRuby - CGIクッキーに対処する方法について説明します。
- CGIセッションのRuby - CGIセッションに対処する方法について説明します。