アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在perlにてcgiを作成しています。

以下のようなcgiを作成したのですが、POSTで受取ったデータが
標準入力より取得できません。
解決策、又は、調査方法等ご存知の方いらっしゃいましたら教えてください。

--------- a.cgi --------
#!/usr/bin/perl
print "Content-type: text/html\n\n";
if( $ENV{'REQUEST_METHOD'} eq "POST" ){
read( STDIN, $buffer, $ENV{'CONTENT_LENGTH'} );
}else{
$buffer = $ENV{'QUERY_STRING' };
}
print <<"HTML";
<HTML><HEAD><TITLE>テスト</TITLE>
<META http-equiv=Content-Type content="text/html;">
</HEAD>

<BODY>
<FORM id=Form1 name=Form1 action=a.cgi method=post>
HTML

print <<"HTML";
<INPUT type=hidden value=aaa name=text1>
<INPUT onclick="return confirm('送信します。よろしいですか?');" type=submit value=送信 name=Button1>
</FORM>
</BODY>
</HTML>
HTML

exit;
--------------------------------------------------

$ENV{'REQUEST_METHOD'} は POST を取得できていますし、
$ENV{'CONTENT_LENGTH'} も文字数は取得できています。

どうか宜しくお願い致します。

A 回答 (2件)

こんにちは、


ローカルで実行してみたら、ちゃんと読み込んでましたよ。

>2つのヒアドキュメントの間にはcgiの処理があるため分けています。
この辺りでクリアしてしまってたりとか?
    • good
    • 0
この回答へのお礼

こんにちわ。

再度の回答ありがとうございます。
解決しました。

実は、今回の質問文には書いていなかったのですが、
a.cgiでCGI.pmを使っているのですが、
そちらの方でフォームデータの獲得ができました。

use CGI; ← すでに宣言済
$q = new CGI; ← すでに宣言済
$data = $q->param('aaa'); ← 新たに追加

上記の方法で獲得するのが普通のようでした。

ご迷惑をおかけしました。ありがとうございました。

お礼日時:2007/08/02 14:07

こんにちは、



>$ENV{'REQUEST_METHOD'} は POST を取得できていますし、
>$ENV{'CONTENT_LENGTH'} も文字数は取得できています。

同じように $buffer も確認したんですか?

>read( STDIN, $buffer, $ENV{'CONTENT_LENGTH'} );
これ自体には特に問題ない気がしますけどね

本題とは違いますが、
HTML を print してるヒアドキュメントは二つに分けなくてもいいんじゃないですか?
分けてもよいかも知れませんが、ターミネータは別の文字列にした方が良いかも知れません。

この回答への補足

こんにちわ。

>同じように $buffer も確認したんですか?

はい。確認しました。
$bufferの中身は空でした。

>HTML を print してるヒアドキュメントは二つに分けなくてもいいんじゃないですか?
>分けてもよいかも知れませんが、ターミネータは別の文字列にした方が良いかも知れません。

2つのヒアドキュメントの間にはcgiの処理があるため分けています。
質問の時は1つにすればよかったですね。
ご指摘ありがとうございました。

補足日時:2007/08/02 11:15
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!