-PR-
  • すぐに回答を!
  • 質問No.7462944
解決
済み

perl cgiの変数の受け渡しができません。3

  • 閲覧数363
  • ありがとう数6
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 64% (37/57)

http://okwave.jp/qa/q7451675.html

すみません、3回目の質問です。
相変わらず変数の値がうまく渡りません。

3つのページ(ファイル)に分かれていまして
a 入力ページ
b 入力確認ページ
c メール送信ページ
の構成になっています。

a,入力ページが
print $q->start_html(-title=>"*****", -BGCOLOR=>'#ffffff'),
#$q->p('Content-type: text/html\n\n'),
#$q->header(-charset=>"Shift_JIS"),
$q->p('<body bgcollor="#ffffff" text="#000000" link="#0000ff" vlink="#ff00ff">'),
$q->p('<FONT color="blue">****FONT>'),
$q->hr,
$q->p('<form method="post" action="***.cgi">'),# 送信ボタンで送信するデータここから
$q->p('<FONT color="blue">【***】</FONT>'),
$q->p('<INPUT TYPE="text" NAME="name" VALUE="" SIZE="25" MAXLENGTH="25">'),
$q->p('<FONT color="blue">【***】</FONT>'),
$q->p('<INPUT TYPE="text" NAME="menberno" VALUE="" SIZE="25" MAXLENGTH="25">'),
$q->p('<FONT color="blue">【***】</FONT>'),
$q->p('<select name="question" size="1" multiple="multiple">'),
$q->p('<option selected="selected" value="aaa">aaa?</option>'),
$q->p('<option selected="selected" value="bbb">bbb?</option>'),
$q->p('<option selected="selected" value="ccc">ccc?</option>'),
$q->p('</select>'),
$q->br,
$q->p('<FONT color="blue">【****】</FONT>'),
$q->p('<INPUT TYPE="text" NAME="ans" VALUE="" SIZE="25" MAXLENGTH="25">'),
$q->p('<input type=submit value="送信">'),
$q->p('</form>'),# 送信データここまで
$q->hr,
$q->end_html;

となっています。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
b.入力確認ページが
$formdata = "最初は空っぽ";
print "$formdata<BR>";
if ($ENV{'REQUEST_METHOD'} eq "GET") {# GETでの受信
$formdata = $ENV{'QUERY_STRING'};
print "Get=$formdata";
}
else {# POSTでの受信
read(STDIN, $formdata, $ENV{'CONTENT_LENGTH'});
print "POST=$formdata";
}
print "$formdata<BR>";#ここも空っぽ・・・・
####################################################################################
# 表示部
####################################################################################
#print $q->header(-charset=>"Shift_JIS");
print $q->start_html(-title=>"******", -BGCOLOR=>'#ffffff'),
$q->p('<meta http-equiv="content-type" content=text/hetm; charset=Shift_JIS>'),
$q->p('<form method="post" action="mail.cgi" value=$formdata>'),# 送信ボタンで送信するデータここから
$q->p('<FONT color="red">'),
$q->p('***'),
$q->p('***'),
$q->p('</FONT>'),
$q->p('***********'),
$q->hr,
$q->p('<input type=submit value="****">'),
$q->p('</form>'),# 送信データここまで
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
となっていますが、受信したはずのデータが空っぽのようなのです。
何も表示されません。
色々調べてみたのですが、よくわかりませんでした。
教えて頂きたいです。
  • 回答数1
  • 気になる数0

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

  • 回答No.1
レベル14

ベストアンサー率 55% (1857/3366)

$qは何でしょう?

おそらくCGIオブジェクトだと思います。そうであるなら
http://perldoc.jp/docs/modules/CGI-2.89/CGI.pod より
> 新しい問い合わせオブジェクトの作成(オブジェクト指向スタイル):
> $query = new CGI;
> これは(POSTとGETメソッドの両方からの)入力を解析し、 $queryと呼ばれるperl5オブジェクトに格納します。
と、あります。つまり、
> if ($ENV{'REQUEST_METHOD'} eq "GET") {# GETでの受信
(略)
> print "POST=$formdata";
>}
の部分はまったく無意味なコードです。CGIモジュールを使う理由の一つは、こういうコードを書かなくても、簡単にパラメータ受けとれる、ということです。
内容はparamメソッドで取りだせます。


・これが出力したHTMLを「ソースを見る」等で確認しました?
pメソッドは<p>タグの構造をperl上で表現するためのものです。
$q->p( "aaaa", $q->strong("BBB") , "ccc" )
→ <p>aaaa<strong>BBB</strong>ccc</p>
といったように。こうすると、Perlでの文法の構造と、HTMLの文法構造が一致するわけです。

それをまったく無視してるので、できあがったソースが無茶苦茶になってます。
そのせいで、そもそものデータが送られてない可能性もあります。

formを書くなら http://perldoc.jp/docs/modules/CGI-2.89/CGI.pod#pod125011 あたりを読んでください。
正しい文法かどうかもわからないなら、各種チェッカーがありますから、使ってください。
http://validator.w3.org/
http://openlab.ring.gr.jp/k16/htmllint/index.html
http://users.skynet.be/mgueury/mozilla/ (firefoxのアドオン)


・前の質問(http://oshiete.goo.ne.jp/qa/7453554.html)から
> ラクダ本の上巻は必須でしょうか?

下巻は、当然、上巻の続きですから、上巻を読んでいること前提で書かれています。
他の資料で上巻相当のことを理解しているのなら不要かもしれません。
が、これまでのやりとりを見ていると、とてもそうには見えません。
ラクダ本はあまり初心者向けではないので、今すぐに、とは言いませんが、将来続けていくなら読んでおいた方がいいです、
お礼コメント
kmwrod

お礼率 64% (37/57)

大変詳しいご指摘ありがとうございます!
htmlの知識が足りないことがわかりましたので、そちらから勉強していきたいと思います。
htmlもよくわかっていないので、まずはhtmlで表示を作ってから、CGIプログラムに落とし込む、といった作り方をしていこうと思います。

本当にありがとうございました。
投稿日時 - 2012-05-08 10:49:05
  • ありがとう数0
-PR-
-PR-
  • 回答数1
  • 気になる数0
このQ&Aのテーマ
このQ&Aで解決しましたか?

関連するQ&A

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

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

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

特集


関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ