• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:php メールフォーム プルダウンメニュー)

phpメールフォームプルダウンメニュー

このQ&Aのポイント
  • プルダウンメニューを使用して、フォーム→確認→送信と順々に値を受け取りたいのですが、form.phpではプルダウンメニューは表示されますが、form.phpで選択したプルダウンメニューがconfirm.phpでは表示されません。
  • confirm.phpでも表示されてなおかつ送信をしたら受け取れるようにしたいのです。
  • 初心者なので、いろいろと勉強をしながら、本を読んだり、調べたのですが、まったくわからずです。どなたかご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.4

混乱を避けるために、配列指定をはずすことを #1 でお勧めしたのです、 > multipul を指定してるわけでもないようなので [] はいらなくないですか? > name="year[]" → name="year" とすれば $year = isset( $_POST[ 'year' ] ) ? $_POST[ 'year' ] : null; で済みます。 -------------------------------------------------------------- $year = isset( $_POST[ 'year' ] ) ? $_POST[ 'year' ][ 0 ] : null; この時点で、$year には '1971' などの文字列が格納されています。 (もちろん何も選択されていなければ null になります。) ですので、 <?php print h($year[0]) ;?>年 とすると、一文字目だけの表示 "1年" とならないですか?

h-h13
質問者

補足

でました。 ですが、このform.phpで1971年01月01日と選択した場合confirm.phpの確認画面でも1971年01月01日と表示させたいのですが、記述はどのようになるでしょうか? また、この場合 // POSTされたデータとエラーメッセージをセッション変数に保存 $_SESSION['year'] = $year[0]; $_SESSION['month'] = $month[0]; $_SESSION['day'] = $day[0]; $_SESSION['error'] = $error; はこのままでよろしいのでしょうか? 本当に初心者なのもので、なにもわからないためお願いします。

その他の回答 (3)

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.3

mail の件は撤回しますが、回答は同じです。 $year = is_array( $_POST[ 'year' ] ) ? $_POST[ 'year' ][ 0 ] : null; $month = is_array( $_POST[ 'month' ] ) ? $_POST[ 'month' ][ 0 ] : null; $day = is_array( $_POST[ 'day' ] ) ? $_POST[ 'day' ][ 0 ] : null; $birthday = "{$year}年{$month}月{$day}日"; <tr><td>生年月日</td><td><?= $birthday ?></td><td>例:1990年01月01日< /td></tr> それとも、プルダウンそのものを取得したいという意味ですか?

h-h13
質問者

補足

お忙しい中有難う御座います。 もし参考サイト等を知っているならば教えていただけないでしょうか? 下記がsend.phpになります。 <?php $mailTo = '****@****.com'; $subject = 'お問合せ'; $returnMail = '****@*****'; function checkInput($var) { if (is_array($var)) { return array_map('checkInput', $var); } else { if (get_magic_quotes_gpc()) { // magic_quotes_gpc対策 $var = stripslashes($var); } if (preg_match('/\0/', $var)) { // NULLバイト攻撃対策 die('不正な入力です。'); } if (!mb_check_encoding($var, 'shift-jis')) { // 文字エンコードの確認 die('不正な入力です。'); } return $var; } } session_start(); $_POST = checkInput($_POST); if (isset($_POST['aaaa']) && isset($_SESSION['aaaa'])) { $aaaa = $_POST['aaaa']; if (!in_array($aaaa, $_SESSION['aaaa'])) { die('不正アクセスの疑いがあります。'); } } else { die('不正アクセスの疑いがあります。'); } $name = $_SESSION['name']; $kana = $_SESSION['kana']; $mail = $_SESSION['mail']; $year = $_SESSION['year'][0]; $month = $_SESSION['month'][0]; $day = $_SESSION['day'][0]; $comment = $_SESSION['comment']; mb_language('ja'); mb_internal_encoding('shift-jis'); $header = 'From: ' . mb_encode_mimeheader($name) . ' <' . $mail . '>'; $message = ''; $comment = "差出人:" .$_SESSION['name']."\n". "メール:" .$_SESSION['mail']."\n\n\n". "->フリガナ:\n" .$_SESSION['kana']."\n\n". "->お問合せ内容:\n" .$_SESSION['comment']; if (ini_get('safe_mode')) { $result = mb_send_mail($mailTo, $mailBCC, $subject, $comment, $header); } else { $result = mb_send_mail($mailTo, $mailBCC, $subject, $comment, $header, '-f' . $returnMail); } if ($result) { $message = '送信完了いたしました。<br />担当者よりご連絡をお待ちくださいませ。'; $_SESSION = array(); session_destroy(); } else { $message = '送信失敗'; } ?>

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.2

mail の件だけ撤回しますが、回答は同じです。 $year = is_array( $_POST[ 'year' ] ) ? $_POST[ 'year' ][ 0 ] : null; $month = is_array( $_POST[ 'month' ] ) ? $_POST[ 'month' ][ 0 ] : null; $day = is_array( $_POST[ 'day' ] ) ? $_POST[ 'day' ][ 0 ] : null; <tr><td>生年月日</td><td>$year年$month月$day日</td><td>例:1990年01月01日< /td></tr> それとも、プルダウンそのものを取得したいという意味ですか?

h-h13
質問者

補足

有難う御座います。 試させていただいたのですが、受け取りができませんでした。 年月日だけしか表示されませんでした。 confirm.phpは下記のようになります。 <?php // 変数にPOSTされたデータを代入 $name = isset($_POST['name']) ? $_POST['name'] : NULL; $kana = isset($_POST['kana']) ? $_POST['kana'] : NULL; $mail = isset($_POST['mail']) ? $_POST['mail'] : NULL; $year = is_array($_POST['year']) ? $_POST['year'][0] : NULL; $month = is_array($_POST['month']) ? $_POST['month'][0] : NULL; $day = is_array($_POST['day']) ? $_POST['day'][0] : NULL; $comment = isset($_POST['comment']) ? $_POST['comment'] : NULL; // POSTされたデータとエラーメッセージをセッション変数に保存します。 $_SESSION['name'] = $name; $_SESSION['kana'] = $kana; $_SESSION['mail'] = $mail; $_SESSION['year'] = $year[0]; $_SESSION['month'] = $month[0]; $_SESSION['day'] = $day[0]; $_SESSION['comment'] = $comment; $_SESSION['error'] = $error; ?> <table cellpadding="0" cellspacing="0" border="0"> <tr><td>項目</td><td>入力欄</td><td>記入例</td></tr> <tr><td>名前</td><td><?php print h($name);?></td><td>例:ORENZZE 太郎</td></tr> <tr><td>フリガナ</td><td><?php print h($kana);?></td><td>例:オレンツェ タロウ</td></tr> <tr><td>メール</td><td><?php print h($mail);?></td><td>例:mail@orenzze.com</td></tr> <tr><td>生年月日</td><td><?php print h($year[0]) ;?>年<?php print h($mont[0]) ;?>月<?php print h($day[0]) ;?>日</td><td>例:1980年01月01日</td></tr> <tr><td>お問合せ内容</td><td><?php print nl2br(h($comment));?></td><td>例:お気軽にご質問下さい</td></tr> </table> <table class="form" cellpadding="0" cellspacing="0" border="0"> <tr> <td><form action="form.php" method="post"><input type="submit" value="戻る" /></form></td> <td><form action="send.php" method="post"><input type="hidden" name="aaaa" value="<?php print h($aaaa);?>" /><input type="submit" value="送信" /></form></td> </tr> </table>

  • yuu_x
  • ベストアンサー率52% (106/202)
回答No.1

mail に紐付けされたフォーム部品がないから。年月日の取得は$_POST[ 'year' ] ,$_POST[ 'month' ], $_POST[ 'day' ] では? ちなみに、配列指定してるから、$_POST[ 'year' ][ 0 ] としなければいけない。 multipul を指定してるわけでもないようなので [] はいらなくないですか? name="year[]" → name="year" 余計なことだけど、メールでもないのに名前が mail だと紛らわしくないですか? option のどれかひとつに selected を指定したほうがいいですよ。

h-h13
質問者

補足

ご回答有難う御座います。 文字数制限のため、かなり省略させていただきました。 <?php session_start(); $aaaa = md5(uniqid(mt_rand(), TRUE)); $_SESSION['aaaa'][] = $aaaa; ?> <form method="post" action="confirm.php"> <table cellpadding="0" cellspacing="0" border="0"> <tr><td>項目</td><td>入力欄</td><td>記入例</td></tr> <tr><td><label for="name">名前</label></td><td><input type="text" size="50" name="name" id="name" value="<?php print h(@$_SESSION['name']); ?>" /></td><td>例:goo 太郎</td></tr> <tr><td><label for="kana">フリガナ</label></td><td><input type="text" size="50" name="kana" id="kana" value="<?php print h(@$_SESSION['kana']); ?>" /></td><td>例:グー タロウ</td></tr> <tr><td><label for="mail">メール</label></td><td><input type="text" size="50" name="mail" id="mail" value="<?php print h(@$_SESSION['mail']); ?>" /></td><td>例:***@***.com</td></tr> <tr><td><label for="birthday">生年月日</label></td> <td> <select name="year" id="year"> <option value="1970">1970</option><option value="1971">1971</option><option value="1972">1972</option><option value="1973">1973</option> <option value="1974">1974</option><option value="1975">1975</option><option value="1976">1976</option><option value="1977">1977</option> <option value="1978">1978</option><option value="1979">1979</option><option value="1980">1980</option><option value="1980">1981</option> <option value="1982">1982</option><option value="1983">1983</option><option value="1984">1984</option><option value="1985">1985</option> <option value="1986">1986</option><option value="1987">1987</option><option value="1988">1988</option><option value="1989">1989</option> <option value="1990">1990</option><option value="1991">1991</option><option value="1992">1992</option><option value="1993">1993</option> </select>年 <select name="month" id="month"> <option value="01">01</option><option value="02">02</option><option value="03">03</option><option value="04">04</option> <option value="05">05</option><option value="06">06</option><option value="07">07</option><option value="08">08</option> <option value="09">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option> </select>月 <select name="day" id="day"> <option value="01">01</option><option value="02">02</option><option value="03">03</option><option value="04">04</option> <option value="05">05</option><option value="06">06</option><option value="07">07</option><option value="08">08</option> <option value="09">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option> <option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option> <option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option> <option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option> <option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option> <option value="29">29</option><option value="30">30</option><option value="31">31</option> </select>日 </td> <td>例:1980年01月01日</td> </tr> <tr><td><label for="comment">お問合せ内容</label></td><td><textarea name="comment" id="comment" /><?php print h(@$_SESSION['comment']); ?></textarea></td><td >例:お気軽にご質問下さい</td></tr> <tr><td colspan="3" style="text-align:center;"><input type="hidden" name="aaaa" value="<?php print h($aaaa); ?>" /><input type="submit" value="確認" alt="確認" /> </td></tr> </table></form> これがform.phpです。

関連するQ&A

専門家に質問してみよう