• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:RubyによるCGIプログラミング(ページ移動) )

CGIプログラミングでページ移動する方法とは?

このQ&Aのポイント
  • Rubyを利用してCGIプログラミングをしていますが、フォームから別のページに飛びたい場合、どのようなコードを書けば良いでしょうか?
  • 今まではCGIの中でputsやprintfを使用してタグを出力し、ページを作成していましたが、新しいページに移動したい場合はどうすれば良いでしょうか?
  • HTTPタグを使用する場合には、<a href="http://www.example.com/page.html">link</a>のような形式でリンクを作成することができます。しかし、WWW::Mechanizeを使用してsubmitボタンをクリックするプログラムにする必要があるかもしれません。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

cgi["aaa"] というのは、クライアントから渡されたパラメータを参照するときに使います。 この場合は関係ないので、普通に文字列代入。 require "cgi" cgi = CGI.new redirect_url = "http://www.google.com" print cgi.header({ 'status' => 'REDIRECT', 'Location' => redirect_url }) cgi["..."]の使い方は、例えば、 require "cgi" cgi = CGI.new redirect_url = cgi["goto"] print cgi.header({ 'status' => 'REDIRECT', 'Location' => redirect_url }) だと、これに対して、 http://あなたのサイト/上記のcgi.cgi?goto=飛び先URL URLで指定した場所に飛べます。

kamuycikap
質問者

お礼

おはようございます。 早速の回答ありがとうございます。 試行錯誤の結果、提示していた抱いたサンプルとは違った形になっており、申し訳なく思いながらもコードを乗せた次第です。 丁寧な対応ありがとうございます。 昨日からサンプロコードを色々ためして、説明頂いた内容を自分でプログラミングしながら体験しておりますが、notnotさんから教えていただいた cgi.out({"Location" => "http://www.google.com"}) do "" end このコードは、cgi.outのブロックとしてdo~endになっております。 この場合、リダイレクトした内容(googleのサイト)を一行ずつ処理できる感じになるのかなと想像して、このコードを試してみたのですが「実行時エラー」になりました。 私は的をはずしているのかもしれません。 <問合せページ> → <確認ページ> → <ありがとうございましたページ> よくあるお問い合わせのプログラミングに利用出来ないかと試行錯誤したわけです。 cgiの中でprintやputsを利用してhtmlタグを書いてページを作る方法ではなく、あらかじめ作成しておいたhtmlファイルをリダイレクトで読み込んで「確認ページ」や「ありがとうございました」ページを作成できないかと考えました。 問合せページで入力した情報を、確認ページに表示する部分について考えなければならないのですが、文章を乗せる部分以外はあらかじめhtmlで作成しておけば後々デザインを変える時に少ない工数で実現可能かなと。 ○デザインはDreamWeaver等で記述出来るようにして、cgiのprint文では記述しない ○プログラムの部分(formタグのactionで呼ばれるcgi)は可能な限りprintによるタグ出力はせずに、ロジカルな処理だけに処理を集中する と、このようにしたかったのです。 まずはnotnotさんのおかげで、第一段階である「ページに飛ぶ」事は可能になりました。 ありがとうございました。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

Location: ヘッダを使えばいいです。cgi クラスを使っているとすると、 #!/usr/bin/ruby require "cgi" cgi = CGI.new ・・・・・・ cgi.out({"Location" => "http://www.google.com"}) do "" end なお、WWW::Mechanizeはクライアント側でつかうツールです

kamuycikap
質問者

お礼

書き込みが遅くなりました。 頂いた情報を元に、色々試してみたのですが..... リダイレクトを利用したページの移動が思うようにできません。 下記のコードを実行(アップロードしてブラウザでアクセス)すると、白紙の画面が表示されてしまいます。 仕組みがよくわかっていなくて申し訳ないのですが、指摘をお願い致します。 #!/usr/bin/ruby # # Redirect Sample CGI # ###################### require "cgi" cgi = CGI.new redirect_url = cgi["http://www.google.com"] print cgi.header({ 'status' => 'REDIRECT', 'Location' => redirect_url })

関連するQ&A

専門家に質問してみよう