• 締切済み

PHPで内容確認画面表示後メールに内容が届かない

PHPを独学で勉強中なのですが、フォームで入力した項目(名前、住所、メールアドレスなど)をPHPで作成した確認画面に内容を反映後、その内容をメールで送信すると内容は送信されてなくメールフォームだけが送信されてしまいます?? 確認画面の内容と同じ文を送信送信して、メールの本文に確認画面と同じ内容をいれるにはどうすればいいのでしょうか?教えてください。よろしくお願いします。 流れ 入力画面(inquiry.html) ⇒ 確認画面(sendmail01.php) ⇒ 送信画面(sendmail02.php) 各画面のソースを一部掲載しました。 【入力画面】 <form action="sendmail01.php" method="POST" name="fmck" onSubmit="return checkSB()"> <tr> <td width="130"><div align="center">氏名</div></td> <td width="430"><input type="text" name="name" size="25" class="zenk1"> ※必須事項</td> </tr> <tr> <td width="130"><div align="center">住所</div></td> <td width="430"><input type="text" name="address" size="60" class="zenk1"> ※必須事項</td> </tr> <tr> <td colspan="2" height="50"><div align="center"><input type="submit" value="入力内容のご確認">   <input type="reset" value="入力内容のクリア"></div></td> </tr></form> 【確認画面】 <tr> <td width="130"><div align="center">氏名</div></td> <td width="430"><?php echo $_POST["name"] ?></td> </tr> <tr> <td width="130"><div align="center">住所</div></td> <td width="430"><?php echo $_POST["address"] ?></td> </tr> <tr> <td colspan="2" height="50"> <form action="sendmail02.php" mane="fmck" method="POST"><div align="center"><input type="submit" value="送信する">    <input type="button" value="前画面に戻る" onClick="history.back()"></div></form></td> </tr> 【送信画面】 // メールを送信するアドレス設定(複数指定する場合は「,」で区切る) $to = "abc@yahoo.co.jp"; // 送信するメールの件名を設定 $subject = "メールフォームお問い合わせ"; // メール本文のヘッダーを設定 $body = "###### お問い合わせ ######" . "\n\n"; // 送信結果をお知らせする変数を初期化する $message = ''; // 投稿内容の取得 $name= $_POST["name"]; $address= $_POST["address"]; // メールのレイアウトの編集 $header = "From:" .$name ." <" .$email .">"; $body .= "お問い合わせがありました。対応よろしくお願いします。" ."\n\n"; $body .= "送信日時:". date( "Y/m/d (D) H:i:s", time() ) ."\n\n"; $body .= "----- お問い合わせ情報 -------------------------" ."\n"; $body .= "■氏名:" .$name ."\n"; $body .= "■フリガナ:" .$address ."\n"; if (mb_send_mail($to,$subject,$body,$header)) { $message = "メール送信は無事に終了しました。 お問い合わせありがとうございました。"; } else { $message = "メール送信は失敗しました。"; }

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

確認画面のform要素に、次に(POSTで)渡すためのnameとaddressを入れないといけません。 <form action="sendmail02.php" mane="fmck" method="POST"> <input type="hidden" name="name" value="<?php echo htmlspecialchars($_POST["name"], ENT_QUOTES); ?>"> <input type="hidden" address="address" value="<?php echo htmlpecialchars($_POST["address"], ENT_QUOTES); ?>"> <input type="submit" value="送信する">    <input type="button" value="前画面に戻る" onClick="history.back()"> </form> 名前、住所の表示部分もhtmlspecialcharsして表示してください。 http://php.net/manual/ja/function.htmlspecialchars.php

challeng-man
質問者

お礼

shimixさん、ご回答ありがとうございます。 早速、確認画面のform要素に、次に(POSTで)渡すためのnameとaddressを以下のように変更して動作確認を試してみました。 <input type="hidden" name="name" value="<?php echo htmlspecialchars($_POST["name"], ENT_QUOTES); ?>"> <input type="hidden" address="address" value="<?php echo htmlpecialchars($_POST["address"], ENT_QUOTES); ?>"> <input type="submit" value="送信する">    <input type="button" value="前画面に戻る" onClick="history.back()"> </form> すると、確認画面で入力画面で入力した内容が表示されなくなりました。 (メール送信すると入力画面で入力した内容がちゃんと表示できるようになりました。) 後どうすれば、確認画面でもメール送信しても入力画面で入力した内容がちゃんと表示されるようになるのでしょうか?教えて頂けませんか?

challeng-man
質問者

補足

shimixさん、ご回答ありがとうございます。 早速、確認画面のform要素に、次に(POSTで)渡すためのnameとaddressを以下のように変更して動作確認を試してみました。 <input type="hidden" name="name" value="<?php echo htmlspecialchars($_POST["name"], ENT_QUOTES); ?>"> <input type="hidden" address="address" value="<?php echo htmlpecialchars($_POST["address"], ENT_QUOTES); ?>"> <input type="submit" value="送信する">    <input type="button" value="前画面に戻る" onClick="history.back()"> </form> すると、確認画面で入力画面で入力した内容が表示されなくなりました。 (メール送信すると入力画面で入力した内容がちゃんと表示できるようになりました。) 後どうすれば、確認画面でもメール送信しても入力画面で入力した内容がちゃんと表示されるようになるのでしょうか?教えて頂けませんか?

専門家に質問してみよう