解決済みの質問
ホームページ作り初心者です。
くだらない質問かもしれないのですが、行き詰まって悩んでいます…。
どうかよろしくお願い致します。
今、CGIを使ってフォームを作っています。
基本的なフォームでは問題がないので、CGI自体に問題はないと思います。
それが、メールフォームをテーブルで囲まれたデザインにした途端、フォーム内容がうまくメールで取得できなくなりました。
本当なら
「shopname = ○○○○
name = ○○○○
tel = ○○○○
email = ○○○○
question = ○○○○」
と送ってほしいのに、
「shopname =
○○○○
name」
となんとも中途半端な内容が送られてきます…。
テーブルを使ったからCGIがうまく作動しないのか、HTMLがおかしいのか、CGIがおかしいのか、どこがいけないのかわかりません。
アドバイスいただけたら嬉しいです。
宜しくお願い致します。
以下、フォームのHTMLです。
---------------------------------------
<form action="./postmail.cgi" method="post" enctype="text/plain" name="form1" id="form1">
<table width="520" border="0" cellspacing="2" cellpadding="2" bgcolor="#7EBEB6">
<tr>
<td width="152" bgcolor="#FFFFFF" class="style3"><center>
店舗名
</center></td>
<td width="354" bgcolor="#FFFFFF"><input type="text" name="shopname" size="44" />
</td>
</tr>
<tr>
<td width="152" bgcolor="#FFFFFF" class="style3"><center>
ご担当者名
</center></td>
<td width="354" bgcolor="#FFFFFF"><input type="text" name="name" size="44" id="name" />
</td>
</tr>
<tr>
<td width="152" bgcolor="#FFFFFF" class="style3"><center>
お電話番号
</center></td>
<td width="354" bgcolor="#FFFFFF"><input type="text" name="tel" size="44" id="tel" />
</td>
</tr>
<tr>
<td width="152" bgcolor="#FFFFFF" class="style3"><center>
メールアドレス
</center></td>
<td width="354" bgcolor="#FFFFFF"><input type="text" name="email" size="44" id="email" />
</td>
</tr>
<tr>
<td width="152" bgcolor="#FFFFFF" class="style3"><center>
メールアドレス(確認用)
</center></td>
<td width="354" bgcolor="#FFFFFF"><input type="text" name="email2" size="44" id="email2" />
</td>
</tr>
<tr>
<td width="152" bgcolor="#FFFFFF" class="style3"><center>
お問い合わせ内容
</center></td>
<td width="354" bgcolor="#FFFFFF"><textarea name="question" cols="43" rows="7"></textarea></td>
</tr>
</table>
<br />
<input type="submit" name="button" id="button" value="送信" />
<input type="reset" name="button2" id="button2" value="すべてクリア" />
<br />
</form>
投稿日時 - 2010-03-19 16:22:01
気になった点が2つほど
その1:ソースが見づらい
input 要素が閉じてあるってことは XHTML なんですよね?
だったら見栄え関連はすべてスタイルシートで設定するべきです。
<form action="./postmail.cgi" method="post" enctype="text/plain" name="form1" id="form1">
<table>
<tr>
<th>店舗名</th>
<td><input type="text" name="shopname" /></td>
</tr>
<tr>
<th>ご担当者名</th>
<td><input type="text" name="name" id="name" /></td>
</tr>
<tr>
<th>お電話番号</th>
<td><input type="text" name="tel" id="tel" /></td>
</tr>
<tr>
<th>メールアドレス</th>
<td><input type="text" name="email" id="email" /></td>
</tr>
<tr>
<th>メールアドレス(確認用)</th>
<td><input type="text" name="email2" id="email2" /></td>
</tr>
<tr>
<th>お問い合わせ内容</th>
<td><textarea name="question" cols="43" rows="7"></textarea></td>
</tr>
</table>
<p>
<input type="submit" name="button" id="button" value="送信" />
<input type="reset" name="button2" id="button2" value="すべてクリア" />
</p>
</form>
HTML はここまでシンプルにできます。
あとは CSS で
#form1 table {
border-collapse: collapse;
width:520px;
}
#form1 th,
#form1 td {
width:152px;
border:2px solid #7EBEB6;
font-weight: normal;
padding:2px;
}
#form1 td {
width:354px;
}
input[type="text"] {
width:230px;
}
こんな感じで宜しいのでは?
ソースを見易く書くというのは、コーディング上の記述ミスを劇的に減らすという効果がありますよ。
その2:エンコードタイプが text/plain ?
正直そんなスクリプトは初めてみました。
本当に application/x-www-form-urlencoded じゃないんですね?
投稿日時 - 2010-03-20 01:39:00
お礼
エンコードタイプを変更したら、無事に解決できました!!!
が、なぜ「text/plain」だとうまくいかず「application/x-www-form-urlencoded」だと大丈夫なのかは、調べたのですがまだわかっていません。
CSSの使い方に関しても、自分でも気になっていた部分だったので、勉強不足を痛感しました…。
まだまだ課題が山盛りです。
的確なアドバイスをありがとうございました。
今後精進できるよう頑張ります。
投稿日時 - 2010-03-23 09:34:22
4人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(7件中 1~5件目)
終わってないようなので、私がやった確認方法を書いておきます。
<form action="mailto:自分のアドレス" method="post" enctype="text/plain" name="form1" id="form1">
これで、メールフォームを自分のメールアドレスに送れます。
この他、受信データを表示する専用のCGIを用意して、受信データを加工しないで受け取って見たら、データに問題があれば判ります。どちらかというと、こちらの方が良いと思います。
投稿日時 - 2010-03-20 12:19:34
お礼
エンコーディングタイプを変更することで解決はできたのですが、アクションに「mailto:」を使うと動かなくなります(涙)
なぜなのか…まだまだ初心者なので課題が沢山残りました。
受信データ表示用の専用のCGIがあるということも初めて知りましたので、今後積極的に利用しようと思います。
ありがとうございました。
投稿日時 - 2010-03-23 10:07:05
すみません。
なぜ?
<form action="http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi" method="post" name="form1" id="form1">
投稿日時 - 2010-03-20 08:23:07
お礼
やはり結果は「Method Not Allowed」でした。
恥ずかしながらフォームを作ったのが初めてで、CGIの仕組みがまだハッキリわかっておりません…。
今後、このような確認方法も含めて、自力で解決できるようになれるよう頑張ります。
ありがとうございました。
投稿日時 - 2010-03-23 09:52:10
No.3 です。
コピーペーストしたら余分な文字が・・
<form action="http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi" method="post" name="form1" id="form1">
です。
投稿日時 - 2010-03-20 08:21:26
No.3 です。
<form action="http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi" method="post" name="form1" id="form1">
として御覧なさい。
投稿日時 - 2010-03-20 08:19:47
?と思うところがいくつかありますが、
下記サイトに送信してみてください。
Enviroment Variable and FORM,COOKIE ( http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi )
<form action="http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi" method="post" enctype="text/plain" name="form1" id="form1">
データーが渡せていればCGIの問題
投稿日時 - 2010-03-19 17:15:42
お礼
「Method Not Allowed」と出ました。
ということはCGIの問題ではないということなのでしょうか(涙)
何か基本的なところが間違っているのか…もう一度色々見直してみます。
ありがとうございました。
投稿日時 - 2010-03-19 21:58:46