記事No | : 10520 |
投稿日 | : 2012/05/14(Mon) 21:47:48 |
タイトル | : name値を個々に取得したい |
ID情報 | : gucchi |
投稿者 | : ぐっち |
URL | : http://gucchi-m.com/?page_id752 |
お世話になっております。
度々の質問で大変恐縮なのですが、ご教授下さいませ。
clipmail 2.62を利用させて頂いております。
ユーザーがname値に入力したデータを個別に取り出すにはどのようにすれば良いのでしょうか?
現状は
!message!
ですべての入力内容が送信メールに表示されていますが、これを個々に取得することは可能でしょうか?
具体的にやりたいことは以下です。
<input name="_Name" type="text" size="15" />
に対して、ユーザーが「XX」と入力したとしたら
%Name%=XX
とメール送信したいのです。
(別のシステムへ情報を送るために必要なのです)
これは可能でしょうか。
かなり初歩的な質問かもしれないのですが、調べてみてもなかなか解決できませんでして・・・。
恐れ入りますが、ご指導頂ければ幸いです。
【追記】
説明が分かりにくかったかもと思い追記させて頂きます。
取得したいのは特定の値のみでなく、ユーザーに入力された全ての値ですが、それを個々に取得したいのです。
例えば
%Name%=XX
%email%=XX@xx.com
%phone%=00-0000
%sex%=男
のようにユーザーが入力した値をメールで送信したいのです。
いろいろ試していますが上手くいきません。
お手数ですがよろしくお願い致します。
記事No | : 10521 |
投稿日 | : 2012/05/15(Tue) 10:57:57 |
タイトル | : Re: name値を個々に取得したい |
ID情報 | : Fuyuki |
投稿者 | : BAL |
URL | : http://www26.tok2.com/home/sumire1100/ |
各ネーム値の前後に%を付けるということでしょうか
#-----------------------------------------------------------
# 送信実行
#-----------------------------------------------------------
# 本文内容
my $tmp;
if ($$in{$_} =~ /\n/) {
$tmp = "%$key_name% = \n$$in{$_}\n"; ## 修正
} else {
$tmp = "%$key_name% = $$in{$_}\n"; ## 修正
}
記事No | : 10522 |
投稿日 | : 2012/05/15(Tue) 11:52:45 |
タイトル | : Re^2: name値を個々に取得したい |
ID情報 | : gucchi |
投稿者 | : ぐっち |
URL | : http://gucchi-m.com/?page_id752 |
ご回答ありがとうございます。
せっかくなのですが、やりたいことと違うようです。
説明が分かりにくくて申し訳ありません。
申し訳ありませんが、再度ご教授願います。
やりたいのは !mesesage! ですべての入力内容を取得するのではなくて、各々のname値に入力された内容を一つずつ取得したいのです。
mail.textには!mesesage!ではなくて、
【名前】 !name!
【住所】 !address!
【性別】 !sex!
のように書きたいのです。
(上記の!name! !address!などは、ユーザーが入力した値が入る変数とお考えください。)
送られてくるメールは
【名前】 山田太郎
【住所】 東京都港区台場
【性別】 男
のようになっていてほしいのです。
上手く説明できずに申し訳ありませんが、上記について再度ご指導願えますでしょうか。
よろしくお願い致します。
記事No | : 10524 |
投稿日 | : 2012/05/15(Tue) 15:04:09 |
タイトル | : Re^3: name値を個々に取得したい |
ID情報 | : Fuyuki |
投稿者 | : BAL |
URL | : http://www26.tok2.com/home/sumire1100/ |
> 送られてくるメールは
>
> 【名前】 山田太郎
> 【住所】 東京都港区台場
> 【性別】 男
>
> のようになっていてほしいのです。
mail.txtをいじらなくてもこれで希望通りになるはずです。
# 本文内容
my $tmp;
if ($$in{$_} =~ /\n/) {
$tmp = "【$key_name】 \n$$in{$_}\n"; ## 修正
} else {
$tmp = "【$key_name】 $$in{$_}\n"; ## 修正
}
記事No | : 10526 |
投稿日 | : 2012/05/15(Tue) 16:54:22 |
タイトル | : Re^4: name値を個々に取得したい |
ID情報 | : gucchi |
投稿者 | : ぐっち |
URL | : http://gucchi-m.com/?page_id752 |
ありがとうございます。
希望がうまく伝えられずに申し訳ありません。
もう少しお付き合いくださいませ。
【】は各値を個別に書きだしたいという喩で、【】を表示させたいというわけではないのです。
値を一つずつ書き出すというのは無理なのでしょうか・・・?
長くなってしまいますが、以下に説明させて頂きます。
希望は以下です。
フォームからのメールは、管理者が閲覧する為のアドレスと、システムへデータを投げる為の2つアドレスへ送信されるようにしています。
例えばname値は
name
furigana
tel
email
sex
address
age
があるとします。(実際の項目はもっと多いのですが、けっこうな数なので省略して書いています。)
管理人は!message!で全ての値が見れるのでOKです。
しかし、システムへ送る値は、上記のうち
nameとtelとemailのみです。(こちらも実際はもっと多いのですが省略しています)
加えてシステムへデータを送るには、メールに以下のように記述しなくてはなりません。
%%%entryNameLast%%%=@@@name@@@ ##nameはユーザー入力値
%%%entryTel%%%=@@@tel@@@ ##telはユーザー入力値
%%%entryEmail%%%=@@@email@@@ ##emailはユーザー入力値
この記述は順番や項目数が違ったりすると上手くデータが取り込めません。(CSVでの登録などと近いイメージだと思います。)
そのため、mail.textに以下のように記述したいのです。
----------------------------
以下の登録がありました。
!message!
システム登録用データ
%%%entryNameLast%%%=@@@ユーザー入力値が入る変数@@@
%%%entryTel%%%=@@@ユーザー入力値が入る変数@@@
%%%entryEmail%%%=@@@ユーザー入力値が入る変数@@@
----------------------------
以上のとおり、各name値にユーザーが入力した値を一つずつ取得したいのです。
これは不可能なのでしょうか・・・?
度々お手数をお掛けして本当に恐縮の至りなのですが・・・
何卒ご教授下さいませ。
記事No | : 10528 |
投稿日 | : 2012/05/15(Tue) 23:17:41 |
タイトル | : Re^5: name値を個々に取得したい |
ID情報 | : Fuyuki |
投稿者 | : BAL |
URL | : http://www26.tok2.com/home/sumire1100/ |
この改造は特殊な部類ですので有償でどこかに依頼される方がよろしいかと。
記事No | : 10531 |
投稿日 | : 2012/05/16(Wed) 01:38:03 |
タイトル | : 残念です>< |
ID情報 | : gucchi |
投稿者 | : ぐっち |
残念ですがこちらではあきらめるほかないようですね・・・。
ユーザーが入力した値をメール本文の任意の場所に表示させるのは、
変数名を特定の記号(!や%。<>など)で囲う等で実現すると推測していたのですが、甘い考えだったようですね・・・。
不勉強な者に何度も付き合って頂き、本当にありがとうございました。
図々しく何度も質問してしまいましたが、
図々しいついでに要望を申させて頂きます。ご容赦ください。
今回の私のようなケースは多くはないかもしれませんが、自動返信メールの宛名を、ユーザーの入力した値を用いて
(名前)様
のようにしたい場合や、
本文中に、ユーザーの入力した値を入れたい
(・(名前)様のご来店をお待ちしております。
・御予約は(日付)です。
・(商品名)をお申込み頂きありがとうございます。
みたいな感じなど)
ということもあるのではないかと思いますので、
次回のヴァージョンアップの際などに、各値を個別に書きだせるようなご対応を検討頂ければ幸甚です。
記事No | : 10535 |
投稿日 | : 2012/05/16(Wed) 17:08:54 |
タイトル | : Re: 残念です>< |
ID情報 | : teketen |
投稿者 | : てけてん |
もう、見ていらっしゃらないでしょうか。
同じ事をしたい方の為に、方法を書いておきます。
但し、以下の改造には、制限があります。
・メールファームでは、<input type="radio" name="問合せ種別" value="ご質問" />ご質問
のように、全てのname値に、全角文字(日本語など)は使えません。(例の場合は、name="問合せ種別"の部分)半角文字(半角カタカナ除く)を使ってください。
ブラウザで表示される時に、問合せ種別などと、日本語で表記したい場合は、設定ファイルのinit.cgiにて設定して下さい。
・他のメールフォームと兼用できません(場合によっては出来ますが、別途設置した方が良いです)。
他にもメールフォームを使いたい場合は、もう一つプログラムの設置をして下さい。
・あて先として、2つ以上のメールアドレスに送る場合、内容は同じになります。
以上です。
これでも宜しければ、ご自分の責任において、改造してください。
CLIP MAIL v2.62
clipmail.cgi
----------------------------------------------------------
436行目付近
# 本文テンプレ内の変数を置き換え
$tbody =~ s/!message!/$mbody/;
# 返信テンプレ内の変数を置き換え
$resbody =~ s/!message!/$mbody/ if ($cf{auto_res});
を
# 本文テンプレ内の変数を置き換え
$tbody =~ s/\ /!/g;
Jcode::convert(\$tbody, 'jis', 'sjis');
$tbody =~ s/!message!/$mbody/;
# 返信テンプレ内の変数を置き換え
if ($cf{auto_res}) {
$resbody =~ s/\ /!/g;
Jcode::convert(\$resbody, 'jis', 'sjis');
$resbody =~ s/!message!/$mbody/;
}
に変更
----------------------------------------------------------
407行目付近
Jcode::convert(\$tmp, 'jis', 'sjis');
$mbody .= $tmp;
の前の行に
$$in{$_} =~ s/!/\ /g;
$resbody =~ s/!$_!/$$in{$_}/ig if ($cf{auto_res});
$tbody =~ s/!$_!/$$in{$_}/ig;
を挿入
----------------------------------------------------------
358行目付近
# 内容を二重送信チェック
if ($upl_file ne $log{$_}) {
の前の行に
$resbody =~ s/!clip-$no!/$upl_file/ig if ($cf{auto_res});
$tbody =~ s/!clip-$no!/$upl_file/ig;
を挿入
----------------------------------------------------------
316行目付近
Jcode::convert(\$resbody, 'jis', 'sjis');
を
# Jcode::convert(\$resbody, 'jis', 'sjis');
と、コメントアウト
----------------------------------------------------------
299行目付近
Jcode::convert(\$tbody, 'jis', 'sjis');
を
# Jcode::convert(\$tbody, 'jis', 'sjis');
と、コメントアウトして下さい。
スクリプトの改造は、以上です。
メール用のテンプレートファイル、mail.txtとreply.txtの記述について。
今までどおり、!message!も使えます。
その他、個別で表示したいものを選んで表示させる事が出来ます。
例えば、
<input type="text" name="name" size="35" />
<textarea name="comment" rows="7" cols="48"></textarea>
<input type="radio" name="syubetu" value="ご質問" />ご質問
で入力した値を、個別で表示したいとします。
その場合、メール用テンプレートの表示したい場所に、name値に指定した文字を!で挟んで(!name!、!comment!、!syubetu!のように)記述して下さい。
<テンプレート記述例>
このメールは自動送信でお送りしています。
以下のとおりフォームメールより送信がありました。
------------------------------------------------------------
▼送信内容
------------------------------------------------------------
!name!さまより、メールを戴きました。
!message!
問合せ種別 = !syubetu!
コメントを戴いています。
!comment!
------------------------------------------------------------
送信日時 : !date!
ブラウザ : !agent!
ホスト名 : !host!
------------------------------------------------------------
この例の場合は、!name!には、<input type="text" name="name" size="35" />で入力された値が
!syubetu!には、<input type="radio" name="syubetu" value="ご質問" />で入力された値が
!comment!には、<textarea name="comment" rows="7" cols="48"></textarea>で入力された値が
それぞれ入ります。
!message!には、今までどおり、全てのメール内容がまとめて入ります。
あと、name値には、date、agent、host、messageは、既に変数として使われていますので、使用できません。
記事No | : 10536 |
投稿日 | : 2012/05/16(Wed) 20:26:17 |
タイトル | : てけてん様 |
ID情報 | : gucchi |
投稿者 | : ぐっち |
URL | : http://gucchi-m.com/?page_id752 |
ありがとうございます!希望通りの挙動が実現できました!!
本当になんと御礼を言って良いか・・・。
心よりお礼を申し上げます!
BAL様も長々とお付き合い頂きましてありがとうございました。