このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

FormからFrom処理用CGIアプリケーションのデータの受け渡し方法

発言者:蔵野
( Date Friday, March 31, 2000 03:57:13 )


はじめまして。

蔵野と申します。
FormからFrom処理用CGIアプリケーションのデータの受け渡し方法に
ついてお尋ね致します。
MacPerlのDemo.acgiや自作のカウンタ,サーバからテキストを
読み込ませて表示させるCGIなどは、問題なく動作するのですが
Formから文字列を受け取り、処理を行うような
CGIのプログラムに文字列がどうしても渡らず、
どうしたらよいかわからず悩んでおります。

移設されました「CGI Programming with MacPerl」の
http://mtlab.ecn.fpu.ac.jp/mpi_cgi/mpcgi05.htmlで
示されておられる例をならって、CGIを以下の環境で
実行してみましたが、入力した文字列が表示されませんでした。

環境
Webstar 1.3
MacJPerl 5.20
Power Macintoch 9600

結果
NAME: 
E-MAIL: 

異なる環境でも同じ結果になりました。
Quid Pro Quo 1.0
MacJPerl5.20
Power Macintoch 8600
( MacPerl5.2でも同じ結果です。)

御教授のほど、よろしくお願い致します。




→  http://mtlab.ecn.fpu.ac.jp/mpi_cgi/mpcgi05.html

寺港みやび さんからのコメント
( Friday, March 31, 2000 20:43:17 )

cgiスクリプトの最初のほうで

=================
if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }
@lines = split(/&/,$buffer);
foreach $line (@lines) {
  ($name, $value) = split(/=/, $line);
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  &jcode'convert(*value,'sjis');
       $form{$name} = $value;
   }
=================
こんな事をしておけば

print $form{'????'};
などとして$form{'????'}でフォームの入力値は扱えますよ。
実際には$valueから不要なものをカットしたり
置き換えたりする処理も入れると思いますが。

HTMLで
<input type="text" name="abcde">
としてあれば
$form{'abcde'}に値が入っています。