• ベストアンサー

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

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

  • Perl
  • 回答数2
  • ありがとう数5

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

  • ベストアンサー
回答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

  • フォームメール確認画面ありのロジック

    はじめまして。 よろしくお願いします。 Perlの勉強を始めたばかりの初心者です。 自作のCGI(Perl)でフォームメールを作成しようとしています。 1.フォームに必要事項を入力 2.確認画面で確認 3.OKならメール送信 ※自分と フォームから入力してもらったアドレスへ2通 1から2へは フォームからのデータ受取 変換 受け取ったデータを含むHTMLの作成。 でできると思うのですが、 2から3へは皆さんどのようなロジックを使っていらっしゃるんでしょうか? 私は1から2へのHTMLの作成の際に Hiddenでメール送信したい内容を隠し持たせてから、 2の画面でのSubmitの時に隠し持たせた内容をメール送信すれば良いのかな? と思っているのですが、 他にどのような方法があるのか(使ってらっしゃるのか)教えて頂きたいのです。 また、上記の方法に対する良し悪しなどもご指摘頂けますと とても助かります。 足りないところは補足致します。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • フォームで送信ボタンを押すと、postmail.cgiのプログラムリストが表示してしまう。

    CGI初心者です! http://www.kent-web.com/data/postmail.htmlを参考にして cgiで送信フォームを作成しています。 perlへのパスも確認し、sendmailのアドレスも $mailprog = /usr/lib/sendmail; で確認して、動作させました。 また、cgiのプログラムはcgi-bin配下に格納し、 $script = ../../cgi-bin/postmail.cgi; という形で修正しました。 ところが、フォームで送信ボタンを押すと、postmail.cgiのプログラムリストがブラウザで表示してしまい、メール送信が出来ない情況です。 うまく動作させたいのですが、どのようにすればよろしいでしょうか。

    • 締切済み
    • CGI
  • フォームの確認画面について

    お世話になります。 現在アンケートフォームを作成し、そのデータをtxtファイルに保存するというプログラムを作成しました。そこでフォームに入力された確認画面を表示させ、確認画面で送信ボタンを押すと、データが蓄積されるプログラムに変えたいと思ってます。 今現在はフォームはhtml cgiはperlで作成してます。 実際にどのようにすればいいかが分かりません。 フォーム(html)→確認用フォーム(cgi)→蓄積用cgiという流れでいいのでしょうか? また、確認用のフォームには戻るボタンを作りたいのですが、戻った時に、入力したデータは保持しときたいのですが。 よろしくお願いいたします。 データ蓄積用cgiプログラム #! /usr/bin/perl require './cgi-lib.pl'; $answer = 31; $ansfile = "/tesuto.txt"; &ReadParse(*in); $name = "てすと"; for($n = 1; $n <= $answer; $n++ ) { $no[$n] = $in{"no$n"}; } open (FILE,">>$ansfile"); flock (FILE,2); print (FILE "\"", $name); for($i = 1; $i <= $answer; $i++ ) { $no[$i] =~ s/\"/""/g; print FILE "\"\,\""; print FILE $no[$i]; } print FILE "\"\n"; flock(FILE,8); close(FILE); print "Content-type: text/plain\n\n"; print "<HTML><BODY>\n"; print "<META http-equiv=\"refresh\" content=\"0;URL=http://○○○.html\">\n"; print "</body></HTML>"; exit;

    • ベストアンサー
    • CGI
  • フォーム入力後の確認画面表示について

    こんにちは。tyabudaiと申します。 よろしくお願いします。 現在、私のサイトでCGIを使って投稿するフォームを作成しています。 流れは以下のようなものです。 1.フォームに内容を入力、送信ボタンでCGI起動。 (以下CGI) 2.入力内容をサーバのファイルに書込む。 3.送信完了のメッセージを表示 そして今、1と2の間に確認画面を表示する処理を 追加したいのですが、どのような処理にするのでしょうか? ソースについては勉強しますので、大まかな流れを教えて いただけないでしょうか?

    • ベストアンサー
    • CGI
  • メールフォームでの確認画面の表示方法

    お世話になっております。 htmlフォームで入力->cgi経由で確認->指定の宛先にフォーム送信と同時に.txtファイルに書込み というメールフォームを作成しているのですが、確認画面に関する以下の2点で困っています。 1)以下は省略していますが実際は確認項目が多いので、cgiにhtmlを書くのではなくconfirm.htmlという別のファイルを読み出して値だけを渡して確認を行いたいが上手く読み出せない。 2)確認画面から送信ボタンを押すと必須項目の入力がないとエラーが返ってくる。 1)に関して sub confirmを以下のように変えてみたのですが、なかなか読み込まれずそのままサーバエラーの表示が出てしまいました。 sub confirm{ my($code); $code = $form{'mode'}; open(CONF,"confirm.html"); while (CONF){ s/REPLACEKEY/$code/; print; } close(CONF); exit; }

    • 締切済み
    • CGI
  • フォームからの送信で・

    perlでフォームから送信する際にまず、htmlから記入してCGIを呼び出し確認画面を出します。 その次に送信となるのですが記入フィールドに空白があると空白から先が削除されて送信されてしまいます。 例えば 山田 太郎と送信しようとすると空白の後が削除され山田で送信されます。 これはどう対処すればいいでしょうか? $hoge =~ s/ /hoge/g;な形でエンコードすればいいのでしょうか? お教えください。

    • 締切済み
    • CGI
  • ◆メールフォームのCGI配布 (送信確認画面と送信内容のコピーを送信)

    タイトルの通りなのですが、 ・送信ボタンを押すと送信内容の確認画面が出てきて、その画面で確認の上送信ボタンを押すと、内容が送信される ・その送信内容のコピーを、フォームに記入されたメールアドレス宛へ自動送信される メールフォームのCGIが欲しいんです。 ちなみに、sendmailは使えます。

    • 締切済み
    • CGI
  • 送信フォームが動きません・・・どこが違ってますか?

    ・http://www.ahref.org/cgi/formmailer/を使用しています。 ・メールアドレスは実際には自分のアドレスを設定しており、cgiのファイル名は、form.cgiです。 ・送信ボタンを押すと、確認画面がでず、メールも送信されず、画面がform.cgiのソースが表示された画面に切り替わってしまいます。 以上よろしくお願いします。 cgi初心者なので、不足な情報があるかと思いますので、 ぜひお知らせください。

    • 締切済み
    • CGI
  • メール送信フォームのCGI

    CGI初心者なので メール送信フォームCGIを無料配布のところからお借りしました。 メール送信は上手くいっているのですが送信結果がブラウザ上に表示されます。 ↓ (確認メールを送信します以下の分) これを表示させないようにCGIのブラウザ表示の部分だけを削除したのですが、CGIが動かなくなります。 単純に削除するだけではダメなのでしょうか? 初歩的?なことかもしれませんが・・・よろしくお願いします。

  • メールフォームの確認画面について

    (htmlとcssの知識はそこそこありますが、phpなどのプログラムになると全くわかりません。Dwで自社のホームページを管理しております。) 現在、「かんたんサーバー」の簡易CGIを使ってメールフォームを作成しております。 送信完了画面が、ホームページのデザインに合わず浮いているため、変更したいことを「かんたんサーバー」の方に問い合わせしたところ、変更は不可能とのことでした。 そこで質問なのですが、 1. 疑いたくはないのですが…本当に不可能なのでしょうか?可能ならばその方法を教えて頂けないでしょうか? 2. 1.が不可能な場合、そういうCGIなどを利用せずに、フォームを自分で作成し、特定のアドレスに送信することはできないのでしょうか?私が調べた限りでは、actionはCGIに頼るしかなさそうでした… 3. ゆくゆくはエラーチェック画面、確認画面、も付け足したいのですが、簡易CGIを利用している限り、そういう派生は難しいのでしょうか? phpやjqueryなどは、部分的に変更(カンですが…)はできると思います。 参考サイトや知識などをお分け頂ければ嬉しいです。 何卒宜しくお願い致します。

専門家に質問してみよう