http://oshiete.goo.ne.jp/qa/7451675.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>'),# 送信データここまで
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
となっていますが、受信したはずのデータが空っぽのようなのです。
何も表示されません。
色々調べてみたのですが、よくわかりませんでした。
教えて頂きたいです。
No.1ベストアンサー
- 回答日時:
$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# … あたりを読んでください。
正しい文法かどうかもわからないなら、各種チェッカーがありますから、使ってください。
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)から
> ラクダ本の上巻は必須でしょうか?
下巻は、当然、上巻の続きですから、上巻を読んでいること前提で書かれています。
他の資料で上巻相当のことを理解しているのなら不要かもしれません。
が、これまでのやりとりを見ていると、とてもそうには見えません。
ラクダ本はあまり初心者向けではないので、今すぐに、とは言いませんが、将来続けていくなら読んでおいた方がいいです、
大変詳しいご指摘ありがとうございます!
htmlの知識が足りないことがわかりましたので、そちらから勉強していきたいと思います。
htmlもよくわかっていないので、まずはhtmlで表示を作ってから、CGIプログラムに落とし込む、といった作り方をしていこうと思います。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Rubyのmechanizeを利用したファ...
-
wordの数式について 定積分を書...
-
ラジオボタンが両方とも選択で...
-
「value」に2つの値をセットす...
-
htmlからパラメータで、cgiに渡...
-
VB.net データーグリッドビュー...
-
select値をhiddenのvalueに渡し...
-
Perlでuse socketを使用してフ...
-
チェックボックスの返す値
-
postデータのあるページの再表示
-
[HTML]プルダウンメニューの横...
-
FORMのselectの選択肢を最初か...
-
一つの検索窓で複数のサイトか...
-
1つのformに2つのsubmitボタン
-
index.html(トップページ)か...
-
htmlでセルの値を取得して計算...
-
proftpdで困ってます。
-
別formのhidden項目を自form値...
-
MSPゴシックで、一番幅を取る文字
-
ラジオボタンを選択済みにする...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(Perl)ReadParseによるハッシ...
-
Javascriptの変数をCGIに送る方法
-
フォーム入力後の確認画面表示...
-
htmlからcgiに変数を配列にして...
-
perlで自動ログインをしたいが...
-
別サーバーのcgiへバイナリデー...
-
VBで表示したホームページの...
-
リストボックスで選択してさら...
-
入力規則をまとめて定義
-
HDMLでCGIを使おうと思うのです...
-
Rubyのmechanizeを利用したファ...
-
cgi-libを使って変数値渡しをし...
-
htmlのフォームからcgiにデータ...
-
アクセス元URLによって振り分け...
-
フォームに入力した情報をその...
-
SUN BBSの改造方法
-
ラジオボタンが両方とも選択で...
-
「value」に2つの値をセットす...
-
WEBページを強制的に横画面で見...
-
select値をhiddenのvalueに渡し...
おすすめ情報