• ベストアンサー

フォームデータ-の送信時の確認画面の表示方法

初めて質問させていただきます。 perl初心者です。 メールフォームの確認画面の出ないものを作成し(mail.cgi)問題なく稼動していますが何かと不便なので 確認画面のを表示させたいのですがどうすれいいのか 教えていただきたいです。 現在はフォームより送信されてきたデータ-をそのままメール送信しています。 perlでフォームデータ-を読める形に整形し表示するまではできています。 ここから先が分かりません。 いろいろ調べましたが分からず書かせて頂きました。 どなたか よろしく御願いいたします。

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

  • ベストアンサー
回答No.2

じゃ、シンプルなものを 詳しく説明します #1とは別途です。混乱しますので#1に書いたことは無視してください # 以下の HTML cgi ともに EUCコードで書いています # メールに書き出すときだけ JISコードに変換します #尚、このスクリプトの場合はJcode.pmが必要です ##最初のFORMを送る mail.htmの中身の内FORMタグ部分のみ <form action ="./mail.cgi" method ="POST"> name<input type = "text" name="n"><P> <textarea name="txt" rows="5" cols="70"></textarea><P> <input type="submit" value="1 確認" name="send"> </form> #次にそれを受けるmail.cgiの中身 #ここでは省略しますが、まずMime-Typeヘッダ出力 # それから %formに入力した文字列をデコードして入れた前提です # 上のHTMLから送られていますので # $form{'n'}と$form{'txt'}は名前と本文 # $form{'send'}には submitボタンの文字列が入っていますが # $form{'send'} の値が 頭に 2 が付く場合は メール送信処理 それ以外は確認画面を表示します if($form{"send"} =~ /^2/) {&send_mail;} else {&form2;} exit(); #######メインルーちん は以上 #######form2 確認画面表示 ルーちん ## sub form2{ print<<FORM2; <h2>FORMメール</h2> 確認するなら[1確認]を押す。送信してよければ[2送信]を押す<P> <PRE> 名前: $form{'n'} 本文: $form{'txt'} </PRE> <form action="$ENV{'SCRIPT_NAME'}" method="POST"> name<input type = "text" name="n" value="$form{'n'}"><P> <textarea name="txt" rows="5" cols="70"> $form{'txt'} </textarea><P> <input type="submit" value="1 確認" name="send"> <input type="submit" value="2 送信" name="send"> </form> FORM2 # ここの確認画面で "2 送信" の方のボタンを押すと次の画面だとメール送信 # "1 確認" ボタンを押すともう一回確認表示になります } #### #####sendmail メール送信処理ルーちん ##### sub send_mail{ use Jcode; $form{'n'} = Jcode->new($form{'n'}, "euc")->jis; $form{'txt'} = Jcode->new($form{'txt'}, "euc")->jis; $my_mail='tarou@hoge.example.com';# 自分のメールアドレス $sendmail='/usr/sbin/sendmail'; open(OUT,"| $sendmail -t"); print OUT<<MAIL; X-Mailer: CGI-TEST-MAIL ver0.1 From: $my_mail To: $my_mail Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="ISO-2022-JP" Subject: Form-mail name = $form{'n'} text : $form{'txt'} --------------- [ http://hoge.example.com/~tarou/ ] MAIL print<<END_MSG; <html><body><h2>送信しました</h2> END_MSG close(OUT); } __END__

see-sky
質問者

お礼

umasikajiro様 お世話になっております。 お陰さまで無事 フォーム⇒確認画面⇒メール送信 が稼動しています。 書いて下さったソース大変助かりました。 評価ポイントの20点をさし上げたく思いますが 操作が分からないのでできませんでした。 ご貴重なお時間を本当にありがとう御座います。 また質問させて頂くことがあると思いますが その時も宜しくお願いいたします。<(_ _)>

その他の回答 (1)

回答No.1

画面に表示するところまで出来ているのなら HIDDENタグで 確認済みである事を示す値を送るようにすればOKです 以下は私が昔書いた掲示板cgiで表示させている確認画面のHTMLソースですが 確認だけでなく FORM入力欄に先ほど入力した文字列をvalueで入れるようにしていますので その画面で訂正も可能となっています。 <HTML><HEAD>お知らせ</HEAD><body> <h4> 確認なさってください </H4> <SCRIPT LANGUAGE="JavaScript"><!-- alert(" 確認なさってください ");// --> </SCRIPT> <HR> ここに 入力した物が表示 名前:次郎<br> メール:jirou@hoge.example.com<br> 本文:よろちくちく <HR> <FORM ACTION=/~tarou/hoge/hoge.cgi METHOD="POST"> <H4>宜しければ再度[送信]ボタンを押してください</H4> <INPUT TYPE=HIDDEN NAME=post value=yes> <hr> <input type=submit value="この内容で送信する"> [<a href="javascript:history.back()">一つ前のページに戻る</a>] [<A HREF="/~tarou/hoge/hoge.htm">投稿ページへ</A>]<br> NAME<input type=text name="n" size="60" maxlength=50 value="入力された名前"><br> M A IL<input type=text name="e" size="60" maxlength=80 value="入力されたメールアドレス"><br> U R L <input type=text name="u" size="60" maxlength=80 value="同上"><br> <textarea name="t_msg" rows="5" cols="70"align="top"> 入力された本文 </textarea><br> </form> 以下略

see-sky
質問者

補足

umasikajiro様 早朝より ご回答ありがとう御座います。 早速ですが 質問させていただきます。 勉強不足ですみませんが下記の意味がわかりませんので 御願いいたします。 > HIDDENタグで 確認済みである事を示す値を送るようにすればOKです > <INPUT TYPE=HIDDEN NAME=post value=yes> <INPUT TYPE=HIDDEN NAME=post value=yes>これをCGI側でどう受け取って セッションの継続をするのでしょうか? 宜しかったらTYPE=HIDDENと NAME=postと value=yesの意味を教えていただけませんでしょうか。 例えば フォームからの送信データ-が5つあった時 どの情報を どれだけ どこへ保持し 表示し smtpへながしているのでしょうか? (^^; お書き下さったソースも参考になりました。 ありがとう御座います。 他のサイトで今までふつうに利用していた確認画面ですが、 こんなに難しいとは思いませんでした。 これを機会にしっかりと理解したく思います。 よろしく御願いいたします。 ありがとうございます。<(_ _)>

関連するQ&A