![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.2ベストアンサー
- 回答日時:
表題を見たときに「CGIからCGI」ということで、「そりゃ無理」だと思って内容を見たら普通の処理のことだったので遅まきながら回答させていただきます。
要するにひとつ目のCGIが出力したHTMLリンクから次のCGIを呼び出すということですね。
方法というか書き方はいくつかありますが、わかりやすい例をひとつ
ひとつ目のCGIがリンクをはき出す際にリンク先をJavaScriptにしてJavaScriptからフォームにパラメータをセットしてサブミットする方法です。
お役に立てればさいわいです。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
<script language="javascript">
<!--
function fCallNextCGI(P1,P2,P3,...Pn){
// パラメータ設定
document.form.H1.value = P1;
document.form.H2.value = P2;
document.form.H3.value = P3;
:
document.form.Hn.value = Pn;
// 送信
focument.form.submit();
}
//-->
</script>
<body>
<!-- ここからフォーム -->
<form name="form" method="POST" action="NextCGI.cgi">
<input type="hidden" name="H1" value="">
<input type="hidden" name="H2" value="">
<input type="hidden" name="H3" value="">
:
<input type="hidden" name="Hn" value="">
</form>
<!-- ここまでフォーム -->
<!-- ここからリンクリスト -->
<a href="#" onClick="fCallNextCGI('文字列1','文字列2','文字列3',...'文字列n')">リンク1</a><br />
<a href="#" onClick="fCallNextCGI('文字列1','文字列2','文字列3',...'文字列n')">リンク2</a><br />
<a href="#" onClick="fCallNextCGI('文字列1','文字列2','文字列3',...'文字列n')">リンク3</a><br />
:
<a href="#" onClick="fCallNextCGI('文字列1','文字列2','文字列3',...'文字列n')">リンクn</a><br />
<!-- ここまでリンクリスト -->
</body>
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
蛇足
1.「そりゃ無理」と思った理由:CGIがCGIを多重に呼び出せる機構があったら無限呼出でサーバを簡単にダウンさせることができるため、サーバサイドのスクリプトを多重に起動することはできないような仕組みになっています(例:CGIで出力されたHTML内にSSIを記述して動作を期待すること)。 ただしCGIから呼び出されたプログラムが別のプログラムを起動して処理を受け渡すことは可能です。
2.上記例でリンクタグの「href=""」内に直接JavaScriptを書くことも可能ですが、対応していないブラウザがあるので要注意
No.3
- 回答日時:
ANo.2です。
たびたびすいません。
忘れていたことをみっつ
1.提示しました例は、一つ目のCGIがはき出すHTMLの例です
2.文字コードには気をつけましょう。文字化けによる誤動作がいやならS-JISは使わないことです。
3.POSTメソッドの方がGETメソッドと違ってセキュリティ上安全ということはありません(多少のリスクは減りますが)。受信する側のCGIの作り方しだいです。
No.1
- 回答日時:
少しイメージがわかりにくいので、的外れかもしれないですが、
ひとつのhtmlに<form></form>は複数かけるので別のCGIにpostしたり、
同じCGIに別のhiddenデータを送ることは可能だと思います。
アドバイスありがとうございます!
私の書いた内容が分かりにくかったすよね。。。
イメージは↓な感じなんです。
(1)[html]:入力画面
(2)[cgi]:(1)の入力値をデータベース内のデータと比較
&該当する各データのリンクを表示
(3)[cgi]:(2)でクリックしたリンクに該当するデータを表示
それで(2)→(3)でデータを渡す方法が分からず困っています。
データが大きいので無理やりcookieを使うのは難しいので、
URLにパラメータとしてくっつける方法にしようかと考えています。
(見栄えよりも、作る方を優先しまして…)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- CGI 古ーくからフリーのtree.cgi掲示板を利用させてもらって来ましたが、最新でなにか復活できないか? 2 2023/04/07 10:43
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- Perl Perlのエラーについてご教授ください。初心者です。 CGIを別サーバに移したところ、Perlのバー 5 2023/05/31 10:48
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- CGI サイト訪問者の情報を取得したい 1 2023/02/21 11:03
- Perl Windows10においての『Perl』のプログラムについて 1 2022/05/09 16:04
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
- CGI htmlからcgiを自動的に起動させたい 1 2023/02/21 19:39
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlで Right関数に近い処理を...
-
パイソンエラーについて
-
splitの逆の処理
-
CSVファイルの中で、「 , 」カ...
-
英数字のみ全角から半角に変換
-
エクセルで数値を全角文字(カ...
-
VBA EXCEL あるセルの中の一...
-
EXCELからCSVにすると余計なカ...
-
「何とかで始まり、何とかで終...
-
VBA 置換文字がみつからない時
-
文字コードの%E3%80%とは何です...
-
マクロを使ってフォルダー内に...
-
csvデータ ダブルクォーテ...
-
COBOLでの全角文字の判定をした...
-
住宅にカナを入力する際に丁目...
-
C#で、テキストボックスの入力...
-
データにカンマが入ったCSVデー...
-
[VBA][Excel]クリップボードか...
-
IEからEdgeへの移行に伴うIMEの...
-
スペースで区切られた氏名から...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Malformed UTF-8 character
-
Perlで Right関数に近い処理を...
-
splitの逆の処理
-
パイソンエラーについて
-
日本語文字列の指定長(byte)切出し
-
特定の文字列をHTMLタグに変換...
-
完全一致のデータだけを検索で...
-
何度も出現する文字列AAのうち...
-
VBA split(文字列, ★) ★←複数...
-
数字を文字列に変換し短縮化する
-
プログラミング HSPの変数につ...
-
perlで文字列を短く(圧縮)し...
-
特定文字列の抽出
-
ファイルから文字列を読み出し...
-
カートの送料設定を2個まで1個...
-
外部ファイルに「漢字(かんじ...
-
正規表現での文字の抜き出し
-
リストデータの検索でのエラー...
-
メールヘッダのMIMEエンコード...
-
Perlの文字列置換について
おすすめ情報