wwwmailの送信結果の表示をフォームごとに変更したい
[上に]
[前に]
[次に]
素人管理人
1999/09/13(月) 11:54:29
素人管理人です。前回はB-Cusさんにお世話になりました。
すみませんが、質問がもう一つあります。
メール送信後の結果をhtmlで表示するため、
# ブラウザ画面に送信結果を書き出す
という箇所で、
print "Location: http://www.hogehoge.co.jp/hoge.html\n\n";
といった形に設定しています。
wwwmailを汎用的に使いたいので、このurlの部分を送信フォームの
中にinput type="hidden"という形で埋め込んで、wwwmailがその
urlを拾って、メール送信後に、そのurlを表示する、といった形にしたい
のですが、うまくいきませんでした。
具体的には、
wwwmail.cgiの
# ブラウザ画面に送信結果を書き出す
という箇所で、
print "Location: $FORM{'result'}\n\n";
と設定して、フォームの中に
input type="hidden" name="result" value="http://www.hogehoge.co.jp/hoge.html"
というタグを埋め込んだのですが、メールは送信されるものの、送信結果画面が
表示されなくなりました。
わかりにくい説明だと思いますが、アドバイスお願いします。
ふじ
1999/09/13(月) 13:16:41
$FORM{'result'} に値がちゃんと入っているかどうを確認しました?
まず、
>print "Location: $FORM{'result'}\n\n";
の代わりに
print "Content-Type: text/plain\n\n";
print $FORM{'result'};
として、$FORM{'result'} の値が望むようなものになっているか
確認しましょう。
素人管理人
1999/09/13(月) 14:46:51
ふじさん、ありがとうございます。
さっそく試してみたところ、問題なく
input type="hidden"で指定された文字列が表示されました。
さて、このあとは何をすればよろしいのでしょうか?
B-Cus
1999/09/13(月) 15:25:45
では、Locationの前にContent-typeを出力していないかどうか
(本当は「Locationの前に空行を出力していないかどうか」かな)
調べてください。
それでも解決できない場合は、実際のURL、ソースを公開してください。
素人管理人
1999/09/13(月) 17:16:35
>では、Locationの前にContent-typeを出力していないかどうか
>(本当は「Locationの前に空行を出力していないかどうか」かな)
>調べてください。
できました!! 問題なくinput type="hidden"で指定された
URLが表示されました。
#しかし、前回なぜうまく行かなかったんだろう、、、
#日頃の行いかな?
ふじさん、B-Cusさん、本当にありがとうございます。
あと、もう一つ質問があります。
このURLを送信したメールに表示しないことは可能でしょうか?
しつこい様ですが、宜しくお願いします。
B-Cus
1999/09/13(月) 17:32:33
> このURLを送信したメールに表示しないことは可能でしょうか?
まずは自分でどうやったらできるのか考えてみて下さい。
ヒントを言うと、
・メールで送信する文章を作っている部分がどこか調べる
・その中でFORMの内容を書き出している部分を調べる
・その中で $FORM{result} だけを書き出さないようにする。
ってな感じ。
素人管理人
1999/09/13(月) 19:07:28
>まずは自分でどうやったらできるのか考えてみて下さい。
すみません。わからなかったです。
多分
# 入力値を読み取る
という箇所でフォームデータを全て読み込んで、それを
メールのボディに張り付けているのだと思いますが、
はっきりいって分からないです。
恥ずかしながら、私パールは全くダメで、今まで
「ここかな?」と思った箇所をちょこちょこ修正
していただけなのです。勉強しなければならないのは
わかっておりますが。
こんな愚か者に愛の手を、、、
B-Cus
1999/09/13(月) 19:24:14
うーん。こういう場合は素直に教えた方がいいんだろうか。
教えるのは簡単だけど、答えだけを教えられた方は進歩
しないからなぁ…。
# という例を最近身近で見たので。
それでも敢えてヒントだけ出してみよう。いじるのは
http://www.tohoho-web.com/cgi-bin/wwwmail.txt
# メールボディを作成する
for ($i = 0; $i < $cnt; $i++) {
$mailbody .= "$FORM[$i] = $FORM{$FORM[$i]}\n";
}
ここ。上のをわかりやすく書くと(…わかりやすいかなぁ?)
foreach $_ (@FORM){
$mailbody = $mailbody . "$_ = $FORM{$_}\n";
}
こう。このループの中で $FORM{result} なら $mailbody に
追加しなければよい、と。
素人管理人
1999/09/13(月) 19:48:53
すみません。やっぱりわからないです。
B-Cusさんに指定された箇所をみて、とほほさんのパール
の説明を読んでif関数の記述方法を読んだのですが、
やっぱりわからないです。
#PerlよりHTMLを勉強しなければならない、大たわけです。
宜しくお願いします。
B-Cus
1999/09/13(月) 23:17:47
本題についてはどなたかが答えて下さると思うので、
僕は「ちゃんと本を買って勉強した方がよい」とだけ言っておきます。
# できれば3日くらいは悩んで欲しかった。
うふ!
1999/09/14(火) 00:48:55
まず、変数ってなに?とか、連想配列って何?とかあたりを
理解して、if文とかを覚えれば良いかと思います。
「急がば回れ」ってことで。
「もし、$FORM{$i} が "result" でなければ、$mailbodyに追加する。」
というのをif文で書ければ、できたも同然かと思います。
http://www.tohoho-web.com/wwwperl1.htm#Value
こことか
http://www.tohoho-web.com/wwwperl1.htm#Syntax
ここをじっくり読んでみてはいかがでしょう?
素人管理人
1999/09/14(火) 14:47:16
># できれば3日くらいは悩んで欲しかった。
すみません。ちょっと皆さんに甘えていました。
やはり、自分で答えを探さないと、何事もものには
ならないのですね。
うふ!さんのアドバイスを見て、もう少し自分なりに
考えてみます。
次に投稿するときは、自分なりに答えを提示して、それを
皆さんに見てもらうようにします。
本当にありがとうございました。
[上に]
[前に]
[次に]