CGI-BBS > CGI > Perl > おなじインプットフォームの値を複数のCGIに割り振るには?


カレッヂ
カレッヂ


質問者 ハシポン  投稿日 11/7(水) 12:15:37
あるインプットフォームの値を複数のCGIに割り振って渡したいと思っております。

たとえば、検索条件を入れてもらったあと、
そのまま検索結果を表示するkekke.cgiと
さらにこだわり条件を入力したい人用へのkodawari.cgi
の二つにはじめの検索条件の値を渡したりする場合です。

普通フォームを書くときって、
<form name="FormName" method="post" action="kekka.cgi">
<input type="text" name="data" size="45">
<input type="submit" name="submit" value="検索">
<input type="reset" name="submit2" value="クリア">
</form>
として、ひとつのCGIにしか渡せません。

このdataの値を二つのボタンを使って、kekka.cgiとkodawari.cgiに
割り振って渡すことは可能でしょうか。

どうぞよろしくお願いいたします。

回答者 呑兵衛@大阪  [削除]  投稿日 11/8(木) 20:33:19
データを一時ファイルにしておき、双方から参照できるように変えれば可能だと思います。

#!/usr/local/bin/perl -c
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);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

# 記録するデータをsjisにする
jcode::convert(\$name,'sjis');
jcode::convert(\$value,'sjis');

push(@kakunou, "$name\t$value");
}
open (OUT, ">$file") || die;
print OUT "@kakunou";
close(OUT);

これで$fileに指定したデータファイルにデータが\t区切りで格納されます。
あとは、cgiのforeachループなどでデータを取り出し結果表示します。

返信(回答)する


Web裏技