• 締切済み

同じ画面を開かないようにしたいのですが

HTML上のTEXTにパラメータを入力して、SUBMITボタンでPerlのCGIを動作させて結果を別窓(TARGET=_blank)でブラウザに表示させています。ここまではできているのですが、これで例えばボタンを3回押すと、3つ同じ画面(パラメータによって結果は違います)が開いてきます。 これを1回目で開いてきた画面が残っている間は、2回目以降開かないというか、ボタンを押しても無視される(意味わかるかな?)ようにしたいのです。 TARGET=_newなら一見大丈夫そうに見えるのですが、ブラウザの「戻る」に開いた履歴が残る(多分CGIは動作してしまっている)ので避けたいと思っています。 環境は以下の通りです、実現可能でしょうか?可能であればその方法をご教授お願いします。 不可能の場合、他の言語ツールで出来そうならそんな情報でもかまいませんのでよろしくお願いいたします。 現在の環境 サーバー:Windows2000Server IIS 5.0 Perl 5 クライアントIE5.5もしくは6.0

  • Perl
  • 回答数1
  • ありがとう数2

みんなの回答

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.1

HTTPの仕組みでは、相手の要求に対しWebサーバーが返答した時点でセッションが終わり、Webサーバー側としては「後の事は知ったこっちゃない」って事です。 つまり「画像が残っている間は」という事に関し、Webサーバーは何も関知出来ません。 いったん画像をダウンロードしてしまった後(表示はダウンロードですから)、クライアントがどうしようが、サーバー側には分からないわけです。 PerlCGIはサーバーサイドスクリプトのため、当然サーバーが分からない事に関し、何も出来ません。 この場合はクライアントサードでどうにかする必要があります。 JavaScriptで制御可能ですが、クライアントがJavaScriptを使用しない設定になっていれば、どうしようもありません。 って、事で諦めましょう(^^; Cookieを利用して、「5分以内には表示しない」とかは出来そうですが… これもクライアント側がCookieを利用しないにしていては…

tikuuni
質問者

お礼

kusukusuさん、回答ありがとうございました。 PerlCGIは諦めます。社内イントラなのでJavaScriptを使用する設定にはできますので、JavaScriptで制御可能なのであれば、その方向で勉強します。 Cookieの利用より手っ取り早そう(かな?)。。。 とりあえず、方向性が決まってスッキリしました。

関連するQ&A

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

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

    • ベストアンサー
    • Perl
  • 一つの画面で複数のパラメータを渡したい。

    いつもお世話になります。 perlでcgiを作成しております。 ある画面の処理で複数入力エリア(テキスト、次のプログラムを呼ぶパラメータ)を設けそれぞれの入力エリアの下に <input type="submit" name="Submit" value="変更">で変更ボタンを設けております。このボタンを押下すると押下された入力エリアのパラメータをコール元に渡すのですが、一番先頭のパラメータしかコール元にわたっていないようです。HTMLでsubmmitは一画面に一回しか記述できないのでしょうか。 イメージは下記の通りです。 大変恐縮ですが、どうすれば一つの画面で複数のパラメータを渡せるのかご教示願います。 PGM{ if (p == A) } &a; { else if (p == b) { &b; } ----- 入力エリアA <input type="submit" name="Submit" value="変更"> パラメータA渡し 入力エリアB <input type="submit" name="Submit" value="変更"> パラメータB渡し

    • ベストアンサー
    • Perl
  • IIS5.1&SSI

    WindowsXP Pro の環境でIIS5.1でWebサーバを立ち上げる為の仕組みの勉強をしています。 CGIを組み込むべくActivePerlを導入しました。 Perlで組んだCGIの動作はできるようになりましたが、 <!--#exec cgi="xxxx.cgi"--> が動作しません。 ものの本によると、SSIはデフォルトで設定済みとなっています。 どこで確認したらいいか教えて下さい。

  • IISでエラー、Apachでは動くのに…。

    初めてCGIでプログラムを作成しました。 自分の環境(Apach)で動くので、それを客先(IIS)に持っていったら、動かない! 大変困っています。 Apachで動くのに、IISでは動かなくなる理由とは、何があるでしょうか。 今、自分の環境をIISにして調べようとしていますが…。 IISの設定も大変ですね。 作成したプログラムは「ご意見」を入れるフォームをCGIで動かして、csvに書き出すものです。 まずhtmlで、「意見を述べる」ボタンを押すと、Submitボタンのactionで対象cgiを呼び出すようになっています。 呼び出されたcgiは意見を入れるフォームが表示され、入力ボタン→確認画面・確認ボタン→csvへの書き込み+ありがとうございました画面の表示。 と、流れていく予定なのですが、 客先で入れようとしたとき、この最初のhtmlのボタンを押した時点で、 『ダウンロードしますか?』が表示されてしまい、 『保存』を押すと、対象CGIを保存しようとし、 『開く』を押すと対象CGIのソースが表示されるようです。 なぜ? 何か原因に心当たりのある方おられたら、ぜひ何か教えていただけると、非常にありがたいのですが…。  どうぞ、よろしくおねがいします。

    • ベストアンサー
    • CGI
  • formでのtarget="_blank"2回目

    formタグでtarget="_blank"要素を指定して、別ウィンドウ(タブ)に結果を戻す仕組みを作成しました。 submitボタンをクリックすると処理が実行され、1回目は問題なく挙動します。 formタグが書かれている画面で2回目以降ボタンをクリックしても全く反応しません。 リロードすると反応するようになります。 リロードすると入力したデータが飛んでしまうので、それ以外の方法で2回以上ユーザーがボタンをクリックした場合submitしたいのですが何か方法はありますでしょうか? (少し調べてみたら、2回目以降出来なくなる事象は何件か見つかりましたが回避策が良く分かりませんでした。) 別タブに出てくるのであればフォームにtarget="_blank"を入れる形には一切こだわっていません。 よろしくお願いいたします。

  • IIS7.0でのnph_cgiが逐次出力しません

    CでCGIを作成し、Windows 2003 Server (IIS6)で動かしています。CGIの名称をnph_xxx.cgiとしてHTMLを出力し、ブラウザに逐次表示しています。このCGIをWindows 2008 server(IIS7.0)で動作させたのですが、逐次出力できておりません。CGIが走り切るとブラウザに出力されます。IIS7.0の設定が悪いのか、プログラムを直さなければいけないのかわかりません。解決策をご存じの方、よろしくお願いします。

    • 締切済み
    • CGI
  • 複数ブラウザ間でcookieを共有させない方法

    あるWEBブラウザから別のWEBブラウザを起動した場合に、 2つのブラウザ間でcookieを共有させない方法を探しています。対象ブラウザと言語は下記の通りです。 ■対象ブラウザ:InternetExplorer(5.5以上)、         NetscapeNavigator(6.0以上) ■言語:CGI(Perl)、Javascript ご存知の方がいらっしゃいましたら、ご教示の程よろしくお願いします。 ちなみに、下記の2つの方法でWEBブラウザを起動すると、 いずれもcookieが共有されてしまいます。 (1)window.open関数を使用  例)   var windowVar=window.open("../a.pl","windowName"); (2)target = "_blank"にしてsubmit  例)    document.form1.action = "../a.pl";   document.form1.method = "post";   document.form1.target = "_blank";   document.form1.submit(); 以上、よろしくお願いします。

  • IIS上でフリーCGIが動かない

    Windos2003Server IIS6.0環境で ActivePerl5.8.8 を導入しましたが、 KENTWEBなどで配布されているフリーCGIをブラウザから開くと、 画面が真っ白のまま何も表示されていません。(エラー表示もありません) 以下のテスト用CGIを作成し、フリーCGIと同フォルダに置いてアクセスすると正常動作します。 --------------------------- #!/user/local/bin/perl print "Content-type: text/html\n\n"; print "こんにちわ\n" --------------------------- この現象の原因としてどのようなことが考えられるでしょうか。 ご存知の方がおられましたらご教示ください。

  • 特定CGI「だけ」が、ローカル環境で実行できない原因について。(POSTでのフォーム送信はローカル実行不可?)

    こんばんは。 サーバでは問題なく動くCGI(Perl)が ローカルPC環境で動きません。 ローカルのHTMLファイルから呼び出すと CGIファイルがテキストとして表示されます。 しかし、パス関係の間違いはありません。 動かないCGIファイルを「print "Hello!";」などの 単純な文章に書き換え、同じHTMLから呼ぶと動きます。 また、「Perl文法チェックサイト」で チェックしても、文法間違いはありません。 ほかにどういった原因が考えられますでしょうか? ---------------------------------------- なお、ローカルのHTMLでは 「form」にラジオボタンを配置、 「submit」で「POST」送信したうえで その結果によってHTMLを生成出力するようにしています。 ここらへん、まったくよく分かっていないのですが もしかして、こういう送信はローカルでは 実行できないとかあるのでしょうか? 送信部分を削って、HTML出力だけのCGIにすると動きます。 繰り返しますがサーバ上では動作しています。 よろしくお願いいたします。 ---------------------------------------- ◆環境◆ WindowsXP IE6.01 httpd 1.42m  ActivePerl(バージョンの見方が分かりません)

    • ベストアンサー
    • CGI
  • iis+cgiでmultipart/form-data送信がうまくいかない

    これまでLinux+Perl/CGIで構築していたWEBサーバをIIS+Perl/CGIに移す必要が生じ、新規にIISによるWEBサーバを構築しました。 一気にコンテンツを移動してもハマるだけだと考え、まずは簡単なコードを記述しCGIが動作するかどうかテストしています。 POSTによるinput type=textのデータ表示まではうまく行きましたが、ファイルアップロードのところで詰まりました。 IIS(Windows)によるWEBサーバの構築は初めてで、何が問題なのかサッパリわかりません。 どなたか問題点あるいはどこをチェックすれば良いかご指摘いただけませんでしょうか。 ●やった事 PerlにてPOSTを利用しmultipart/form-dataにてファイルをアップロードするシンプルなコードを書き、第一段階としてMIMEエンコードされたものをブラウザ上に表示するしようとしてみた。 コードは最下方の通り。 ●症状 送信を実行してもアップロード中のまま(ウィンドウマークが動き続けている)で、IISに設定してある10分程のタイムアウト時間を過ぎて終了してしまう。 TXT、XLS、DOCなどファイル種を変えて試しても全く同じ症状。 ●環境:Windows2000ServerSP4 IIS5.0 Perl5.8.8 *******アップロード画面****** <HTML> <HEAD> <TITILE>ファイルのアップロード</TITLE> </HEAD> <BODY> <FORM ACTION="/cgi-bin/upload.cgi" ENCTYPE="multipart/form-data" METHOD="POST"> ファイル: <INPUT TYPE="file" NAME="File" SIZE="32"><BR> <INPUT TYPE="submit" VALUE="送信"> </FORM> </BODY> </HTML> **********ここまで*********** *******CGI******************* #!/perl/bin/perl read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); print "Content-type: text/html\n"; print "\n"; print "<HTML>\n"; print "<HEAD>\n"; print "<TITLE>test</TITLE>\n"; print "</HEAD>\n"; print "<BODY BGCOLOR=\"#ffffff\">\n"; print "$buffer"; print "</BODY>\n"; print "</HTML>\n"; exit; ********ここまで***********************

    • ベストアンサー
    • CGI

専門家に質問してみよう