初めて質問させていただきます。
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/ ]
print<<END_MSG;
<html><body><h2>送信しました</h2>
END_MSG
close(OUT);
}
__END__
umasikajiro様
お世話になっております。
お陰さまで無事 フォーム⇒確認画面⇒メール送信
が稼動しています。
書いて下さったソース大変助かりました。
評価ポイントの20点をさし上げたく思いますが
操作が分からないのでできませんでした。
ご貴重なお時間を本当にありがとう御座います。
また質問させて頂くことがあると思いますが
その時も宜しくお願いいたします。<(_ _)>
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>
以下略
この回答への補足
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- X(旧Twitter) Twitterの異議申し立てについて 2 2022/07/08 17:46
- JavaScript テーブルの中のセレクトボックスの値が0のとき、非表示にしたい 3 2022/05/29 10:13
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- Gmail 過去のGoogleアカウントのログイン 1 2022/08/09 20:15
- Access(アクセス) アクセス フォームの自動入力 1 2023/03/20 00:18
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでoutlook365が起動しません。
-
プロキシ経由でjavamailを使っ...
-
C#のメール送信時のエラーについて
-
Excel VBAでリンク切れをチェッ...
-
例外処理のフローチャートの記...
-
Excel VBA 『Call』で呼び出す...
-
モジュールとは何ですか
-
【vba】フォームに書いてあ...
-
Form間の値の渡し方
-
Excel VBAで、ユーザーフォーム...
-
VBA This Workbookモジュール...
-
VBAで別モジュールへの変数の受...
-
モジュールの最大数はいくつな...
-
Perl 強制終了の回避について
-
Excel VBA 定義されたプロージ...
-
Perlスクリプトで文字化けして...
-
Excel VBA 標準モジュール内で...
-
ハマったので助けて~。Apache...
-
VBAで旧字体を異字体に一括で変...
-
Excel VBAで、ユーザーフォー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでoutlook365が起動しません。
-
VBScriptで、メールの送信をし...
-
VBAでsmtp認証をするには?
-
c#で 簡単なメール(添付ファ...
-
Perl メール 文字化け
-
Net::SMTPでメールを送信したい...
-
メールの送信について
-
Clipmail3.0 確認画面の非表示...
-
Exchangeを使用したメール送信...
-
Windowsメールを別アプリから操...
-
受信メールの本文の行間が空く
-
さくらインターネットでの添付...
-
プロキシ経由でjavamailを使っ...
-
VBSの修正点を教えてください。
-
添付ファイルをつけてメールを送る
-
BASP21使用のメール送信でコマ...
-
foreachでのメール一斉送信処理...
-
server errorで困ってます。
-
CDO.Messageを使ったVBScript
-
LotusScript メール作成方法が...
おすすめ情報