![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
入力画面で入力したデータを、
確認画面でHiddenに設定し、
確認OKでHiddenからの入力データを
メールで送信するCGIを作成しました。
確認画面では、入力内容を正しく表示するのですが、
確認OKでメールを送信すると
同じNameの入力項目の情報を重複して表示してしまいます。
こんな感じです・・・
【入力・確認画面】
Add:住所1
Tel:999-999-999
Add:住所2
Tel:111-111-111
【メール内容】
Add:住所1
Tel:999-999-999
Add:住所2
Tel:111-111-111
Add:住所1
Tel:999-999-999
Add:住所2
Tel:111-111-111
フォーム内容を取得するところがまずいのでしょうか・・・
補足等致しますのでアドバイスお願いいたします。
【フォーム内容を取得】
if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); }
else { $buffer = $ENV{'QUERY_STRING'}; }
No.5ベストアンサー
- 回答日時:
フォーム内容を取得する際の$bufferの値に、add等は二重に入ってますか?
送信側CGIと受信側CGIのどちらに原因があるかが判ると原因に近づけるかも…
それから、確認フォームを飛ばして、いきなり入力画面からメール送信にしたら問題は出ますか?
これで出るならメール送信CGI側(受信側)の問題な気がします。
★ご参考ですが…
的はずれだとは思いますが、以前使用していたサーバーで、FTPに不具合があり、既存のファイルを転送しなおしたら、新しく終わったファイルの後ろにゴミが入った事がありました。一度CGIファイルを削除して転送し直してみては如何でしょう。
まだ、不具合は解消していないのですが、
最初の質問と疑問点がずれてきてしまったので
一旦締め切って、いろいろ試してみたいと思います、
ありがとうございました。
またよろしくお願いいたします。
No.4
- 回答日時:
確認画面でhiddenに設定しているというのが気にりますね。
hiddenでは表示されないので、表示用には投稿時と同じようにフォームに設定しているのでしょうか?
だとしたら
hidden と 確認用のフォームに同じnameを付けているために、同じデータが二つづつ送信されてしまうのでは?
<input type="hidden" name="Add" value="住所1">
<input type="text" name="Add" value="住所1">
確認画面で上記のような状態に?!
もし、そうであれば hiddenへの設定は不要になりますね。
回答ありがとうございます。
入力画面ではTEXTボックス。
確認画面ではHIDDEN項目と、通常の文字表示でつくりました。
私がテストしているサーバではうまくいくのですが、
Webサーバの別サーバでテストするとこんな現象になります。。。
No.3
- 回答日時:
1 【入力・確認画面】で表示される画面のソースは確認しましたか?もしもここに何も問題がないのであれば
プログラム上の問題なので、スクリプトの他の部分も見ないと原因はわかりません。
2 もしもあなたが、欲しい項目をはっきり把握しているなら・・・
もちろん把握してますよね?
use CGI qw(:standard escapeHTML);
$Add=param('Add');
$Tel=param('Tel');
・・・・
で内容を取得して、メール本文を形成してやれば、少なくとも重複することはないと思います。
1、CGIで作成されたHTMLならば確認いたしました。
ソース全てをのせて原因を見ていただきたいのですが、大変残念なことに文字制限に引っかかってしまいます。
2、そんな感じでNameを指定して取得しているのですが。。。。
繰り返し項目TextのNameを同じにしたのがまずかったのでしょうか。。。
ありがとうございました。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_08.png?e8efa67)
No.2
- 回答日時:
こんばんわ。
入力画面・確認画面・送信は、すべて同一のCGIで出力
(表示)をしているのでしょうか?
例:ab.html -> def.cgi -> def.cgi
def.cgi -> def.cgi -> def.cgi 等
それと、この部分はリクエストメソッドの判定をして、送
られてきたデータをバッファに入れてるだけなので、この
部分の公開だけでは、どこが問題なのか判断できません。
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
$buffer = $ENV{'QUERY_STRING'};
}
とりあえず、CGIの中身を教えていただかないと厳しいです。
html+cgiで行っているならば両方のコードをお願いします。
(もしソースコードの公開に抵抗がある場合は結構です。)
それでは。
回答ありがとうございます。
CGIは全て1つのソースで作りました。
フォーム内容を別々の変数に入れる部分は確認とメール送信で共通で使っているので、おかしいとしたらここかな?と・・・
(+文字制限があるので
それで、別サーバでも同じ環境でためしてみたのですが、そっちはうまくいくのです。。。
ソースと言うより、サーバのせい?と思ってきました。
No.1
- 回答日時:
まずは、Formのmethodをgetにして、最初のページから確認ページ、確認ページから登録処理へ行くところで、URLの後ろに「意図したパラメータのみ」が付与されているか確認してみてはいかがでしょう。
ちゃんとxxx.cgi?変数=値&変数=値&変数=値・・・となっているなら、プログラム上の問題かと思います。
そのあたりは如何ですか?
それも質問に書いて貰えると、より回答しやすくなりますので。
回答ありがとうございます。
分かりにくい質問になってしまって申し訳ありませんでした。
教えていただいた方法で
別サーバでも同じソースを使ってテストしてみたのですが、1つではうまくいき、別のもう1つでは質問した現象が発生してしまいました。
サーバが原因なのでしょうか・・・。
なにかお心あたりありましたらお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Safariで「本当にこのフォーム...
-
お問い合わせフォームから送信...
-
ホームページビルダーのメール...
-
safariの 「本当にもう一度フ...
-
フォームを再送信しますか?
-
Accessでメール一括送信ソフ...
-
サイト上のアンケートからメー...
-
sendmailでの複数メールアドレ...
-
HP の問い合わせフォームのつく...
-
VBA EasyCommでの送信
-
至急!教えてください!企業の...
-
ビジネスメールの敬称
-
数字以外の入力をエラーにする...
-
ホームページビルダー20SPで...
-
テキストボックスの番号を使っ...
-
TextBoxから数字が文字...
-
ページ移動した場合の、フォー...
-
accessで該当するレコードがな...
-
初歩的な事だと思います。 Sub...
-
携帯サイト作成 半角数字(半角...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
お問い合わせフォームから送信...
-
フォームを再送信しますか?
-
Googleフォームを回答したか確...
-
Safariで「本当にこのフォーム...
-
Accessでメール一括送信ソフ...
-
BASP21のSendMailとSendMailEx...
-
ACCESSから、メール送信を行い...
-
ソケットで通信するデータの帯...
-
メールアドレスが正しいかどう...
-
メールフォームで送信すると「...
-
VBで添付ファイル付きのメール...
-
VB6で、Bsmtp.dllを使って、メ...
-
ホームページビルダーのメール...
-
VB.NETからGmail経由でメールを...
-
Postmailの使用でメール受信が...
-
VBA EasyCommでの送信
-
VBA メール一斉送信で添付ファ...
-
メールフォームの受信先にg-m...
-
VBでメール送信ソフトを作成
-
SendmailでHTML形式のメールを...
おすすめ情報