print("Location: ../admin.cgi?action=head&page=cnn\n\n");
のように他のcgiへページを移行しているのですが、フレームの中に
cgiファイルを出力しているのでtargetの指定が必要になります。

Locationを使ってtarget指定は出来ないのでしょうか?
もし、やったことのある人がいればご指導ください。

A 回答 (2件)

Location ヘッダでは指定できないので、その Location ヘッダを書き出す CGI に


起動をかける form で target を指定しましょう。

<form action="xxx.cgi" target="admin.cgi の内容を表示したいターゲット">

xxx.cgi が

> print("Location: ../admin.cgi?action=head&page=cnn\n\n");

を吐き出すつもりで書いてます。

この回答への補足

ありがとうございます。
やっぱりLocationをつかってはtarget指定できないんですね。
現状では1つのアクションを起こしたときにフレーム内の2つのページを更新したいので(しかも異なったcgiファイルを用いて)、むりみたいですね。
1つのsubmitで2つのformを送信するのも無理ですもんね。

もうcgiの構成を変えるしかないみたいです。

補足日時:2001/08/08 11:37
    • good
    • 0

> 1つのsubmitで2つのformを送信するのも無理ですもんね



JavaScript を使って良いんだったらできますよ。

<script type="text/javascript>
function submit_twice() {
 document.form1.submit();
 document.form2.submit();
}
</script>

<form name="form1" action="1.cgi" target="target1">
 …
 <input type="button" value="送信" onClick="submit_twice()">
 <!-- このボタンで、同時に二つ submit -->
 <!-- type="submit" なボタンは作らない -->
</form>

<form name="form2" action="2.cgi" target="target2">
 …
 <!-- こっちの form にはボタンを作らない -->
</form>

って感じ。

同じパラメータを二つに送るのであれば、form2 の方は type="hidden" にして
submit() する前に、値を複写してあげれば良いですね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QLocation: で cgi → cgi は不可?

print "Location: ./index.cgi\n\n";

上記の命令でエラーとなります。
i-mode用のHPを作ろうと思うのですが,情報の受渡が必要でして・・・
どうすればいいのでしょう?
何かいい方法有りませんか?

Aベストアンサー

 Location: ヘッダは、http:// から始まるフルパスでないと動きません。
 チェックしてみてください。

Q#exec cgi="**.cgi"をCGIページで表示する

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

よろしくお願いします。

Aベストアンサー

CGIの中でしたら
include
または
require
で呼び出せばいいかと思います。

Q正規表現 \s が、\n に、ヒットする。

# 正規表現 \s が、\n に、ヒットする。
#
# Windows XP(sp3) ActivePerl
#
# This is perl 5, version 12, subversion 3 (v5.12.3) built for MSWin32-x86-multi-thread
# (with 9 registered patches, see perl -V for more detail)
#
# Copyright 1987-2010, Larry Wall
#
# Binary build 1204 [294330] provided by ActiveState http://www.ActiveState.com
# Built Feb 9 2011 14:38:22
#
use strict;
use warnings;
use utf8;

my $a = "\n\n";
$a =~ s/\s/aaaaa\n/ig;
print $a;
__END__

[出力結果]
aaaaa
aaaaa

Aベストアンサー

正規表現式で\sは、スペース、タブ、改行のいずれかを意味します。

(参考)
http://www.site-cooler.com/kwl/perl/8.htm#8-2

Q「  」が表示されません

「main.cgi」というファイルを作り、単純にHTMLを表示するだけのCGIファイルを作成しました。

こんな感じ
------------main.cgi------------
#!/usr/local/bin/perl
print "Content-type:text/html\n\n";
print <<EOM;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title></title>
</head>
<body>
<略>
</body>
</html>
EOM
__END__
--------------------------------

それで、ほかのHTMLファイルに
<!--#exec cgi="main.cgi" -->
と入力してそのページを見てみると、
[an error occurred while processing this directive]
上の文章が表示されていました。
どうすれば「main.cgi」の内容を表示することができるのでしょうか?

よろしくお願いします。

「main.cgi」というファイルを作り、単純にHTMLを表示するだけのCGIファイルを作成しました。

こんな感じ
------------main.cgi------------
#!/usr/local/bin/perl
print "Content-type:text/html\n\n";
print <<EOM;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
<title></title>
</head>
<body>
<略>
</body>
</html>
EOM
__END__
...続きを読む

Aベストアンサー

Apacheの設定が
IncludesNoExec
だとSSIでexecは使えなくなるのでその設定がされているのではないでしょうか。
<!--#include virtual="main.cgi" -->
ではどうでしょうか。

QアンケートCGI作成について、form actionの呼びだし等につい

アンケートCGI作成について、form actionの呼びだし等について質問です。
初めまして、CGIアンケートを作成しようとしているPerl初心者です。

説明ページ(ex01.html)

フォーム付きアンケートページ(enk01.html)

説明ページ(ex02.html)

以下略

という流れでアンケートを続かせたいのですが
(だいたい、ex.htmlとenk.htmlが各20ずつくらいです。)

フォーム付きアンケートのフォーム
<form action="form.cgi" method="post">
<input type="radio" name="Emotion_Body" value="0" checked> 選択肢1
<input type="radio" name="Emotion_Body" value="1"> 選択肢2
<input type="radio" name="Emotion_Body" value="2"> 選択肢3
<input type="submit" value="次のアンケート">
となっていて、actionに次のページのhtmlをいれ込むことができませんでした。
(form.cgi:formから受け取ったデータを外部ファイルへ書きだすCGIファイルです。)
フォームの「次のアンケートボタン」を押すと、
form.cgiにフォームのデータを送りつつ、ex02.htmlを表示させるということはできないものでしょうか?
過去ログによるCGIに表示させる方法を書くのだと、
フォームページの間に、ただのhtmlファイルを挟むので、
(例:enk01.html→ex02.html→enk02.html→…)
各ページに対応したCGIファイルを書かなければならないということなのでしょうか?

よろしくお願いいたいします。

アンケートCGI作成について、form actionの呼びだし等について質問です。
初めまして、CGIアンケートを作成しようとしているPerl初心者です。

説明ページ(ex01.html)

フォーム付きアンケートページ(enk01.html)

説明ページ(ex02.html)

以下略

という流れでアンケートを続かせたいのですが
(だいたい、ex.htmlとenk.htmlが各20ずつくらいです。)

フォーム付きアンケートのフォーム
<form action="form.cgi" method="post">
<input type="radio" name="Emotion_Body" value="0" checked> 選択肢1...続きを読む

Aベストアンサー

セッション管理の問題です。だいたい3つぐらい方法があります。
1) 隠しフォームを使う
2) クッキーを使う
3) クエリーを使う( 1)と技術的には同じ )

1) の方法を説明すると
form.cgiが出力するフォームにhidden状態なパーツを追加しておきます。

例えば
<input type="hidden" name="next_page" value="enk02.html" />
などとします。

これでフォームを返したときに次に表示するページがわかります。
valueをその次に表示するページを出しておけば、順番に表示できます。
この例で言えば、next_pageがenk02.htmlという値を受け取ったら、
次の隠しフォームはex02.htmlにすればよいです。

リダイレクトといっているのは、form.cgiから別のURLに飛ばすということを言っています。
print "Location: http://xxx/enkxx01.html\n\n";
とするか、CGI.pmを使っているのなら
use CGI;
my $q = CGI->new();
print $q->redirect('http://xxx/enkxx01.html');
でもいいのでしょう。

セッション管理の問題です。だいたい3つぐらい方法があります。
1) 隠しフォームを使う
2) クッキーを使う
3) クエリーを使う( 1)と技術的には同じ )

1) の方法を説明すると
form.cgiが出力するフォームにhidden状態なパーツを追加しておきます。

例えば
<input type="hidden" name="next_page" value="enk02.html" />
などとします。

これでフォームを返したときに次に表示するページがわかります。
valueをその次に表示するページを出しておけば、順番に表示できます。
この例で言えば、next_pageがenk02.htm...続きを読む


おすすめ情報