通常であれば同一サイト内に下記のソース(フォーム)が入るのですが、
これを改良しサイト上で希望の送信先をチェックボックスで選択し一回の操作で複数のcgiを実行したく思います。
良いcgiがあれば教えてください。
又は改造ができるcgi、修正方法を分かりましたらお教え願います。
サイトA
<form action="https://aaa.cgi" method="post">
<input type="hidden" name="名前" value="name">
<input type="hidden" name="メール" value="mail">
<input name="Submit" type="submit" value="送信">
</form>
サイトB
<form action="https://bbb.cgi" method="post">
<input type="hidden" name="名前" value="name">
<input type="hidden" name="メール" value="mail">
<input name="Submit" type="submit" value="送信">
</form>
サイトC
<form action="https://ccc.cgi" method="post">
<input type="hidden" name="名前" value="name">
<input type="hidden" name="メール" value="mail">
<input name="Submit" type="submit" value="送信">
</form>
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
処理するCGIの内容を
# 処理1
とかに置き換えてやればできると思いますよ。
つまり、
print qq|処理1が実行されました。\n|;
をaaa.cgiの内容に置き換えて、
print qq|処理2が実行されました。\n|;
をbbb.cgiの内容に置き換えて・・・
とやればチェックによって処理内容が変わります。
ただし、aaa.cgiをまるまるコピー&ペーストをするとエラーが出ます。(多分)
ここはある程度の慣れか勘が必要になると思います。
これで分からない場合は、もうちょっと勉強してからでないと厳しいと思います。
この回答への補足
毎回、貴重なアドバイス有難うございます。
この部分が分からないところです。ハイ
いろいろ文献を見てるのですが、今の疑問と照らし合わせるプログラム等が無い状況です。
似たようなcgiがあれば参考に出来るのですが・・
何から手をつければ良いのでしょうか
No.3
- 回答日時:
cgiではなく、フォームを記載するページからjavascriptを使って複数のフォームを送信するというのはいかがですか?
たとえば、
選択フォーム(動かすフォームを選ぶ):
<form name="cgiselect" onclick="FormSubmit(this)">
<input type="checkbox" name="cginame" value="aaa">aaaに送る
<input type="checkbox" name="cginame" value="aaa">aaaに送る
<input type="checkbox" name="cginame" value="aaa">aaaに送る
<input type="submit" value="送信">
</form>
隠しフォーム(送信用)
<form name="aaa" action="https://aaa.cgi" method="post" target="a">
<input type="hidden" name="名前" value="name">
<input type="hidden" name="メール" value="mail">
</form>
<form name="bbb" action="https://bbb.cgi" method="post" target="b">
<input type="hidden" name="名前" value="name">
<input type="hidden" name="メール" value="mail">
</form>
<form name="ccc" action="https://ccc.cgi" method="post" target="c">
<input type="hidden" name="名前" value="name">
<input type="hidden" name="メール" value="mail">
</form>
スクリプト:
function FormSubmit(FORM) {
// 「aaaに送る」にチェックがあったらフォームAを送信
if(FORM.cginame["aaa"].checked == true) {
window.open("","a"); // aという名前の新規ウィンドウを作成
document.aaa.submit(); //フォームAを送信
window.a.close(); // ウィンドウaを閉じる
}
if(FORM.cginame["bbb"].checked == true) {
window.open("","b");
document.aaa.submit();
window.b.close();
}
if(FORM.cginame["ccc"].checked == true) {
window.open("","c");
document.aaa.submit();
window.c.close();
}
location.href = ok.html // 送信済みページに移動
}
#それぞれのcgiの結果画面を表示するウィンドウが3つ開いてしまうので、自動的に閉じるスクリプトを追加してみました。
ポイントは各フォームのターゲットをそれぞれ別の名前のウィンドウにすることです。これでもとの画面を変更することなく次々にフォームを送信できます。
動作は検証してませんので、うまく動かなかったらすみません。
この回答への補足
丁寧なアドバイス有難うございます。
javascriptを試して見ましたが駄目でした。
しかし、ヒントを有難うございました。
もう少し勉強してみます。
現在、頭が混乱し何から手を付けて良いのかも判断がつかない状況です。
出来るまで挑戦します。
No.2
- 回答日時:
こんな感じでなんとなく感じがわかるでしょうか。
#!/usr/local/bin/perl
$cgi = "a.cgi";
# データ処理
if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }
@pairs = split(/&/,$buffer);
foreach $pair (@pairs) {
($name,$value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
#フォーム変数へ
$in{$name} = $value;
}
print "Content-type: text/html\n\n";
print <<HTML;
<html>
<head>
<title>IF</title>
</head>
<body>
<form action="$cgi" method="POST">
<input type="radio" name="s" value="1">処理1<br>
<input type="radio" name="s" value="2">処理2<br>
<input type="radio" name="s" value="3">処理3<br>
<input type="submit">
</form>
<p>
HTML
if ($in{'s'}) {
if ($in{'s'} == 1) {
print qq|処理1が実行されました。\n|;
} elsif ($in{'s'} == 2) {
print qq|処理2が実行されました。\n|;
} else {
print qq|処理3が実行されました。\n|;
}
}
print <<EOF;
</p>
</body>
</html>
EOF
exit;
この回答への補足
親切な対応、有難うございます。
記載頂いた内容はイメージがつきます。
現在、選択した複数の<form action=".cgi" ・・・・
をどうすれば実効できるかで詰っている次第です。
何卒、アドバイスをお願いいたします。
(慣れないと気が変になりそうです。)
No.1
- 回答日時:
送信先をひとつのCGIにして、
チェックボックスで処理内容を変えればいいのですが、
CGIの動きを知らないと難しいと思われます。
たぶんそういう特殊なCGIは配布されてないので難しいかと・・
具体的には
<input type="radio" name="s" value="1">
<input type="radio" name="s" value="2">
<input type="radio" name="s" value="3">
として、CGI側で
if ($in{'s'} == 1) {
# 処理1
} elsif ($in{'s'} == 2) {
# 処理2
} else {
# 処理3
}
とやればいいのですが。
わかるかな?
この回答への補足
有難うございました。
とても嬉しく思います。
現在、処理の部分がイメージがつかない状況です。
今回のようなcgiの動きを習得する場合、どのようなcgiを参考にしたり、学べばよいでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
チェックボックスで選択した内...
-
チェックボックスの返す値
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
SUN BBSの改造方法
-
pythonのnumpyでの列(縦)ベク...
-
vsftpd+sslでアップロードできない
-
HTML プルダウンメニューの選択...
-
Javascriptの変数をCGIに送る方法
-
perlで書いたcgiでsqliteの使い...
-
Webアプリケーションを作りたい!
-
WEBページを強制的に横画面で見...
-
『数字の3桁毎にカンマを付け...
-
HTMLからCGIへデータを引き継ぎ
-
標準入力からデータが読込めない
-
VBで表示したホームページの...
-
open.window(javascript) を使...
-
CGI実行できない。ソースが表示...
-
CGI
-
htmlからパラメータで、cgiに渡...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
チェックボックスの返す値
-
別formのhidden項目を自form値...
-
チェックボックスで選択した内...
-
Error: No Recipient というエ...
-
CGIでチェックボックスを使...
-
hiddenで送ったデータの取り出し方
-
チェックボックスでのvalue値の...
-
アンケートフォームで前のペー...
-
python subprocessに関する質問
-
CGIで得た内容をHTMlページに代入
-
複数ボタンのvalueを送れない
-
CGIフォームから飛ばすメールで...
-
CGI→CGI変数の引き継ぎは...
-
FC2 掲示版のカスタマイズの仕...
-
心理テストページをCGIで作りた...
-
1つのformに2つのsubmitボタン
-
”送信ボタン” ”クリアボタン”...
-
フォームのvalueを変更する方法
-
フォームの入力内容の後ろに文...
-
アンケートの質問を複数にしたい
おすすめ情報