-PR-
解決
済み

ファイル間の変数引き継ぎ方法を教えてください。

  • 困ってます
  • 質問No.91150
  • 閲覧数640
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 77% (27/35)

初心者です。初歩的な内容ですみません。

cgiのファイル間で変数を引き継ぎたいです。

入力.html  (postで変数を引継ぎ)
 ↓
処理1.cgi (html吐き出しなし)(変数追加・改めてpostのような形で引継ぎ)
 ↓
処理2.cgi (変数利用)

cookieや ファイル名.cgi?key=変数 と言う形ではなく
htmlのpostのようなことをcgiでもやりたいです。

よろしくご指導お願いいたします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル10

ベストアンサー率 64% (73/113)

素直に、処理1.cgiのなかで処理2.cgiを呼び出せば良いでしょう。
この二つのCGIプログラムは同じサーバにあるんですよね?

処理2.cgiの標準入力に、パラメータを追加した文字列を流し込んでやれば
いいと思います。ほかにいくつか環境変数をセットすれば動作するでしょう。

たとえばPerlなら、処理1.cgiはこんな感じになるのでは?
read(STDIN, $query_string, $ENV{CONTENT_LENGTH}); # POSTでパラメータを取得
$query_string .= '&a=123&b=xyz'; # パラメータを追加

$ENV{CONTENT_LENGTH} = length($query_string);
$ENV{REQUEST_METHOD} = 'POST';
open(OTHER_CGI, "|./shori2.cgi") or die "$!";
print OTHER_CGI $query_string;
close(OTHER_CGI);

ただ、普通はこういう風には設計しません。処理1、処理2で共通の部分を
まったく別の xxx.pl などという形でファイルにまとめておきます。
そして、shori1.cgi, shori2.cgiではパラメータをちょっと調整するだけの
機能を記述して、あとはxxx.plの中の関数にやってもらうようにします。
つまりこんな感じですね。

入力.html  (postで変数を引継ぎ)
 ↓
処理1.cgi (html吐き出しあり)変数調整後xxx.plの関数呼び出し
 ↓
xxx.pl (実際の処理)

入力2.html  (postで変数を引継ぎ)
 ↓
処理2.cgi (html吐き出しあり)変数調整後 xxx.plの関数呼び出し
 ↓
xxx.pl (実際の処理)

たとえば吐き出すhtmlの内容がほぼ同じ、とかそういうことならそのhtmlを
吐く部分を
sub print_output {
}
でまとめてxxx.plに書いておき、両方の.cgiから実行できるようにするとか。
こうすれば、処理1、処理2の違いはサブルーチンを呼び出すときの引数を
変えれば済むことになります。
なんでもかんでも *.cgi ファイルに書いておかなければならない決まりは
ありませんよ。

以前似たようなご質問に私が答えたものも参考として下記にあげておきます。
お礼コメント
pion16

お礼率 77% (27/35)

分かりやすいご説明のうえ、さらに応用まで教えていただけたので、次に作成したかったcgiの分も目処がたちました。ありがとうございました。
投稿日時 - 2001-06-18 09:48:23
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル9

ベストアンサー率 65% (25/38)

何がしたいのかがいまいち判りませんが、 CGIスクリプトの場合、HTMLを吐き出さないと エラーになりますよ。 サブルーチンとして、外部スクリプトを用いたい場合は plファイルを作って、CGIの中で呼び出せば動きます。 plファイルには変数の受け渡しをする事はできますよ。 WEBですから、最終的にHTMLを吐き出す必要があると思いますが・・・・ ...続きを読む
何がしたいのかがいまいち判りませんが、
CGIスクリプトの場合、HTMLを吐き出さないと
エラーになりますよ。
サブルーチンとして、外部スクリプトを用いたい場合は
plファイルを作って、CGIの中で呼び出せば動きます。
plファイルには変数の受け渡しをする事はできますよ。
WEBですから、最終的にHTMLを吐き出す必要があると思いますが・・・・
お礼コメント
pion16

お礼率 77% (27/35)

ありがとうございます。
処理のみのcgiをplファイルにすることで、
やりたかった動作が実現できました。
投稿日時 - 2001-06-18 09:43:27


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ