素人につき、とりとめない質問となってしまうこと、ご容赦ください。
下記で配布されているフリーのPHPメールフォームについて、2つ質問がございます。
【MailForm01】PHP多機能メールフォーム フリー(無料)版
下記のような構成になっているのですが、
mail.php(本体) contact.html(フォーム)
【1】本体PHPで設定する「件名」「自動返信の件名」「自動返信の送信者名」を、フォーム側で指定できるようにしたいです。
ひとまず、「件名」「自動返信の件名」は何とかできました。
「自動返信の送信者名」はまだうまくいっていません。
PHP
1オリジナルでは、PHP本体で、決め打ちで設定する3項目 2 3// 管理者宛に送信されるメールのタイトル(件名) 4$subject = "〇〇ついての問い合わせ"; 5 6//自動返信メールの送信者欄に表示される名前 ※あなたの名前や会社名など(もし自動返信メールの送信者名が文字化けする場合ここは空にしてください) 7$refrom_name = "株式会社●● ▲▲支店"; 8 9// 差出人に送信確認メールを送る場合のメールのタイトル(上記で1を設定した場合のみ) 10$re_subject = "お問い合わせを承りました【▲▲支店】";
↑上記の内容を、↓HTMLフォーム側で自由に設定できるようにしたい。
html
1(例) 2 <form method="post" action="mail.php"> 3 <input name="件名" type="hidden" value="〇〇ついての問い合わせ"> 4 <input name="返信送信元" type="hidden" value="株式会社●● ▲▲支店"> 5 <input name="返信件名" type="hidden" value="お問い合わせを承りました【▲▲支店】"> 6・・・・・
本体PHPを以下のように書き換えてみたところ、「件名」「自動返信の件名」はHTML側の値を読み込むことができました。
PHP
1変更箇所 2 3(1)PHP本体で、HTMLフォームのname値に合わせて以下のように設定 4 5// 管理者宛に送信されるメールのタイトル(件名) 6$subject = "件名"; 7 8//自動返信メールの送信者欄に表示される名前 ※あなたの名前や会社名など(もし自動返信メールの送信者名が文字化けする場合ここは空にしてください) 9$refrom_name = "返信送信元"; ←ここはまだうまくいってない 10 11// 差出人に送信確認メールを送る場合のメールのタイトル(上記で1を設定した場合のみ) 12$re_subject = "返信件名"; 13 14 15 16(2)200行目あたりに、以下を追記 17 18//変数初期化 19$sendmail = 0; 20..... 21(中略) 22 23//変数初期化(追記) 24$post_subject = ''; 25$post_resub = ''; 26$post_refrom = ''; 27 28//(追記) 29foreach($_POST as $key=>$val) { 30 if($key == $subject) $post_subject = h($val); 31 if($key == $re_subject) $post_resub = h($val); 32 if($key == $refrom_name) $post_refrom = h($val); 33} 34 35(3) 追記した箇所から後ろのコード内にて、以下の項目を、すべて下記のように変更しました 36$subject → $post_subject 37$re_subject → $post_resub 38$refrom_name → $post_refrom
これで、「件名」「自動返信の件名」は、HTML側の値を読み込むことができましたが、「自動返信の送信者(返信送信元)」だけがうまくいきません。
どこを変更すれば良いでしょうか?
【2】また、これらの値は「hidden」で設定している隠しデータなので、送信前に表示される確認画面では非表示にさせたいです。
【HTML】 これらは確認画面では非表示にしたい <form method="post" action="mail.php"> <input name="件名" type="hidden" value="〇〇ついての問い合わせ"> <input name="返信送信元" type="hidden" value="株式会社●● ▲▲支店"> <input name="返信件名" type="hidden" value="お問い合わせを承りました【▲▲支店】"> ・・・・・ 【PHP】 ▼確認画面を構成している箇所 追記をした上で、330行目あたりから(オリジナルだと320行目あたり) <!-- ▼************ 送信内容表示部 ※編集は自己責任で ************ ▼--> <div id="formWrap"> <?php if($empty_flag == 1){ ?> <div align="center"> <h4>入力にエラーがあります。下記をご確認の上「戻る」ボタンにて修正をお願い致します。</h4> <?php echo $errm; ?><br /><br /><input type="button" value=" 前画面に戻る " onClick="history.back()"> </div> <?php }else{ ?> <h3>確認画面</h3> <p align="center">以下の内容で間違いがなければ、「送信する」ボタンを押してください。</p> <form action="<?php echo h($_SERVER['SCRIPT_NAME']); ?>" method="POST"> <table class="formTable"> <?php echo confirmOutput($_POST);//入力内容を表示?> </table> (中略) <!-- ▲ *********** 送信内容確認部 ※編集は自己責任で ************ ▲--> ↑上記コード内の、下記に対して、「該当の値は非表示にする」ような処理をするのだと思うのですが…… <?php echo confirmOutput($_POST);//入力内容を表示?> 【PHP】 関連していると思われるコード 460行目あたり //確認画面の入力内容出力用関数 function confirmOutput($arr){ global $hankaku,$hankaku_array,$useToken,$confirmDsp,$replaceStr; $html = ''; foreach($arr as $key => $val) { $out = ''; if(is_array($val)){ foreach($val as $key02 => $item){ //連結項目の処理 if(is_array($item)){ $out .= connect2val($item); }else{ $out .= $item . ', '; } } $out = rtrim($out,', '); (中略) ここはどのように変更すればいいか、さっぱりです。
HTMLフォームでhiddenで指定した値を、確認画面では非表示にするには、どのようにすればいいでしょうか?
以上となります。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー