アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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__
    • good
    • 0
この回答へのお礼

umasikajiro様

お世話になっております。

お陰さまで無事 フォーム⇒確認画面⇒メール送信
が稼動しています。
書いて下さったソース大変助かりました。

評価ポイントの20点をさし上げたく思いますが
操作が分からないのでできませんでした。


ご貴重なお時間を本当にありがとう御座います。

また質問させて頂くことがあると思いますが
その時も宜しくお願いいたします。<(_ _)>

お礼日時:2008/06/03 02:02

画面に表示するところまで出来ているのなら


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へながしているのでしょうか? (^^;

お書き下さったソースも参考になりました。
ありがとう御座います。

他のサイトで今までふつうに利用していた確認画面ですが、
こんなに難しいとは思いませんでした。
これを機会にしっかりと理解したく思います。
よろしく御願いいたします。

ありがとうございます。<(_ _)>

補足日時:2008/06/01 09:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!