• ベストアンサー

CGI動作後に元のページに戻る方法

Perl , javascript 初心者です。 あるページの一番下に,チェックボックスを設置して選択してもらうという簡単なアンケートを作っています。 submit ボタンを押した後,CGI(Perl) で処理を行い,その後元のページの元いた場所(アンケートがあるところ)を表示させることはできますか? また,できれば submit ボタンの横に「ご協力ありがとうございました」というコメントを表示したいと思います。 良い方法があれば教えて下さい。

  • km340
  • お礼率78% (11/14)
  • Perl
  • 回答数2
  • ありがとう数5

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

  • ベストアンサー
  • nine999
  • ベストアンサー率44% (512/1140)
回答No.1

perlでは、 print "location: (URL)\n\n"; これでページを呼び出します。 同じフォームに戻らなくても、お礼のページを作った方が良いと思います。 どうしても、フォームに戻るなら、CGIから戻ってきたことが判るようにURLの後ろに「?back」などと識別コードを付けます。 そして、HTML内にJavaScriptを埋め込み、自分自身のURLを調べれば、普段のURLと違うことが判ります。

km340
質問者

お礼

お礼がおそくなってすみません。 教えて頂いた方法でできました。 ありがとうございました。

その他の回答 (1)

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

 色々な方法がありますが、もっとも簡単なのはそのページ自体をCGIで表示させる方法です。 ★たとえば、環境変数・フォーム・クッキー( http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi#form_check )とかは、そうなってます。  あなたに、スキルがあれば拡張子はhtmlにもできる。同じサイトを( http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/test.html#form_check )で呼び出しても同じ。  他にもrefreshを使うとか、HTTP応答ヘッダでlocation: URLを出力させてリダイレクトさせるとか CGI自体に作成させる方法  作成したフォームのあるHTMLのコードをそのままコピーして、CGIスクリプトの最終行に __END__  を書き、そのあとに、HTMLのソースをぺーストします。文字コードは本体と同じ 例) #!/usr/local/pin/perl CGIプログラム 処理後 print "Content-type: text/html\; charset=euc-jp\n\n"; while(<DATA>){print;} sub{} #略 # ・・・・・・・略 __END__ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> 以下略 <form action="[CGI名]#form" method="post" id="form"> ・・・ <input type="submit" value="送信"> </form> </body> </html>

km340
質問者

お礼

回答をありがとうございます。 今回はNo.1の方の方法を使わせていただきましたが, 教えて頂いた方法も今後の参考にさせていただきます。

関連するQ&A

  • perl/cgiについて、教えて下さい。

    perl/cgiについて、教えて下さい。 行いたい事ですが、 1:a.html(テキストボックスとsubmitボタンがあるだけです) 2:b.html(テキストボックスとsubmitボタンがあるだけです) 3:c.html(1,2のテキストボックスの内容を表示するだけです。) 4:x.cgi があります。4のcgiにはまだ何も記述していませんが、1,2のテキストボックスで入力した値を c.htmlに表示させたいと考えています。 又、c.htmlで値を変更すると、1,2のテキストボックスの値も連動して変わるようにしたいです。 例)a.htmlのテキストボックスで「13」と入力してsubmitボタン押下。c.htmlに「13」が表示される。 c.htmlで「13」を「22」に変更すると、a.htmlのテキストボックスの値も「22」になるといったイメージです。 どうぞ、宜しくお願いいたします。

    • ベストアンサー
    • CGI
  • リンク元を調べるCGIの作り方で悩んでいます

    はじめまして。Perl暦1ヶ月の者です。 自分のサイトのリンク元を調べるCGIを設置しようと思いますがどんな方法があるでしょうか。 私が調べた方法は、 1.CGI+SSIを利用 2.CGI+インラインフレームを利用 ですが、1.は各ページに <!--#exec cgi="○○.cgi"--> を入れてCGIを起動させるわけですが、全ページが.shtmlとなってしまい抵抗を感じます。.htm → .shtmlと変わることにより当分検索順位が下がるかもしれません。 それで2.を試しました。通常ページ page1.htm にインラインフレームで○○.cgiを埋め込み、ここでカウンターを表示させるとともにログを取得しようと思ったのです。しかしHTTP_REFERERが取得してくれるリンク元はあくまで「page1.htm」ですので役に立ちません。 最も一般的な方法はどのようなものでしょう?詳しい方よろしくお願いいたします。m(_"_)m *できればコードを丸ごと教えていただけると助かります。 ↓作成の条件です↓ ・一般ページはあくまで.htm にしたい。 ・レンタルサーバー屋はSSIは.shtmlと言っている。 ・リンク元一覧は一般ページには表示しない。 ・全ページの外部リンク元を知りたい。

    • ベストアンサー
    • Perl
  • SSIを利用して、同じCGIを複数のページで呼び出せますか

    CGIプログラムをSSIから呼び出して使うことを考えています。 具体的には、サイト内検索CGIをSSIで呼び出すようにして、複数のページに検索用のテキストボックスとSubmitボタンを置きたいのですが、このような一つのプログラムを複数のページから呼び出して動かすようなことは出来ますか。

    • ベストアンサー
    • CGI
  • フォームでCGIにとばした処理結果を。。

    はじめまして。 JavaScriptもHTMLもCGIもほとんど初心者です。 現在フリーのCGI(Perl:アンケートフォーム)を使用しようとしてるのですが、HTMLファイルのformにあるactionで CGIにとばして、その結果を(JavaScriptで開いた?)新しいウィンドウに表示したいのですが、可能でしょうか? さらに、出来ればその結果が表示される新しいウィンドウにはメニューバーやスクロールバーをなくして、「閉じる」というボタンをつけて閉じるようにしたいのですが、それも可能でしょうか? 何卒よろしくお願いします。 =====

  • CGIで書き出したJavaScriptの動作不安定?

    JavaScriptの動作不安定につき、ご教示ください。 <a href="aaa.cgi">あああ</a>からCGI (perlで記述、サーバーはApache) を 呼び出し、JavaScriptを含む下記のようなhtmlを返しています。 <html><head> <script language="JavaScript"><!-- function first() { window.alert("注意書き"); document.forms[0].elements[0].focus(); } //--></script></head> <body onLoad="first()"> <form><input type="text"> IE5/Win&Mac及びNN4.7/Winで「あああ」をクリックすると、設計どおり 注意書きが表示され、警告窓を閉じるとテキストボックスにカーソルが来ています。 ところが、NN4.7/Macで「あああ」をクリックすると、目的ページが一瞬表示 された後に消え、すぐ再描画され、警告窓もカーソルも出ません。この状態でも、 ソースを見ると上記スクリプトは書出されおり、submitすればform送信に支障は ありません。また、ブラウザボタンで「再読込み」するか「戻る > あああ」で 点滅・再描画の現象なく再表示され、警告窓とカーソルも設計どおりです。 思い当たる原因があるでしょうか? 解消法はあるのでしょうか? 要領を得ない状況説明で恐縮ですが、追加説明は補足要求でご指示くださいませ。

    • 締切済み
    • CGI
  • cgiからcgiを呼び出す方法2

    先日「cgiからcgiを呼び出す方法」で質問させていただいたのですが、 その後の状況にて新たな質問をさせていただきます。 【経緯】 もともと単体で動作していたcgi Aに対して新たにcgi Bを作成し、 cgi Bからcgi Aを呼び出したいのですが、うまくいきません。  cgi A:アンケート回答フォームのようなもの  cgi B:認証フォーム(コードを入力してDB内のデータと一致したらcgi Aを呼び出したい) 【その後の状況】 exec("perl A.cgi"); とすることで cgi A の画面を表示することが出来ました。 【新たな質問】 (1) cgi A の画面は表示されましたが title は cgi B のままです。  exec で cgi A が呼び出された時点で title は cgi A にならないのでしょうか? (2)いろいろなサイトに、呼び出し先に  "Content-Type: text/html; charset=Shift_JIS\n\n"  の記述があってはダメとの説明がありましたが、この記述がないと  cgi Aにてデータを入力し、送信ボタンを押すと  500 Internal Server Error(malformed header from script. Bad header~)  が表示されてしまいます。  Content-Type の記述があれば、cgi A の送信ボタンを押すことによって  入力したデータがDBに格納され、また、title も cgi A のタイトルが表示されます。 【cgi A が呼び出された時点の画面イメージ】  cgi B のタイトル  Content-Type: text/html; charset=Shift_JIS  cgi A のタイトル   cgi A の入力項目   cgi A の送信ボタン cgi A の送信ボタン(submit)を押すことによって、完全に cgi Aに制御が渡るということでしょうか? cgi A を呼び出した時点で完全に cgi A に制御を渡したいのですが、 どなたかアドバイスをお願いします。 cgi A の構成を変える必要があるようであれば、その当たりのアドバイスもお願いします。

    • ベストアンサー
    • CGI
  • #exec cgi="**.cgi"をCGIページで表示する

    #exec cgi="**.cgi" を使って、全ページが同じように表示されるようにしたのですが、 掲示板等のCGIページではなぜか表示されず、ソースを見てみると <!--#exec cgi="**.cgi"--> がそのまま表示され、ただコメントとして扱われていました。 普通のHTMLファイルと同じように CGIでも**.cgiファイルを表示したいのですが、どうすればいいのでしょうか よろしくお願いします。

    • ベストアンサー
    • Perl
  • ページ間での変数の受け渡し

    6つのhtmlファイルと6つのperlファイルからなるアンケートページを作成しています。 ページを遷移するごとに、perlファイルを実行し、未入力があれば、エラー表示、条件を満たせば、ファイルを作成し、内容を書き込み処理させています。 ただ集計に関しては、最後のhtmlファイルのsubmitボタンを押したときにすべて集計をさせたいと考えています。(各設問ごとの集計ファイルは作成済み) 最後のページの処理に対応するperlファイルに最初のページからの変数を宣言していますが、うまく集計されません。どのようにすれば、最後のページのsubmitボタンを押せば集計されるようになるのでしょうか? うまく伝わっているかわかりませんが、宜しくお願いいたします。

  • 呼び出されたページを閉じ、呼び出し元をリロードしたい。

    教えて下さい。 asp(htmlを生成)とjavascriptを利用して下記事項の実現は可能でしょうか? 呼び出し元ページからウィンドウをwindow.openで開く window.openで開かれたページに閉じるボタンを設置 そのボタンを押すと、window.openで開かれたページを閉じ、 呼び出し元ページのiframe内のコンテンツをリロードする。 参考になるサイト・ヒントなんでも結構ですので、 どうかご教授お願いします。

  • pushボタンを押した後、画面を遷移させない方法

    perl か JavaScript で、pushボタン(submit) を押した後、 画面を遷移させないで cgi を動作させる方法はあるでしょうか。 ちょうど、リセットボタンを押したときのような動作が理想です。 裏で動いてて、結果をファイルとか出してくれればいいのですが・・・

    • ベストアンサー
    • Perl

専門家に質問してみよう