1

PHP メール機能を使用して HTML フォームのデータを送信する際に問題が発生しています。メール機能は正常に機能しており、フォームが送信されたときにメールを受信して​​も問題ありませんが、メールに空の配列が含まれることがあります。

コードは次のようになります。

<?php 
error_reporting(E_ALL & ~E_NOTICE);

$email = $_POST['email'];

      //check if value is set:
if (isset($_POST['submit'])){

      $everyoneToppingList = substr(implode(', ', $_POST['everyone_platter_topping']), 0);
     $everyoneCondimentList = substr(implode(', ', $_POST['everyone_platter_condiment']), 0);

};  //end isset($_POST['submit']

$len = strlen($email);
if ($len > 0) 
{
$email_body = "Full Name: $title $fullname\n".
"Topping? - $everyoneToppingList\n".
    "Condiment? - $everyoneCondimentList\n\n";

 $email_to = "example@gmail.com"; 


   $email_from = $_POST['email']; // required

  $URL= "order.php";
  header ("Location: $URL"); 

    // create email headers


$headers = "From: $email_from \r\n";

$headers .= "Reply-To: $email_from \r\n";

$headers .= "Cc: $email_from \r\n";

$headers .= "X-Mailer: PHP/". phpversion();

mail($email_to, $email_subject, $email_body, $headers);    
 }  ?>

html 部分は次のようになります。

<table style="vertical-align:top;" class="form platter bread" cellspacing="2">
    <tr>
        <span class="bold">
            Choose Your Topping: 
        </span> 
        <span id="errorsDiv_everyone_platter_topping[]">
        </span>
        <td height="7" width="87" align="left" valign="middle">
             <input type="checkbox" name="everyone_platter_topping[]" value="Lettuce" id="everyone_lettuce" />
             <label for="everyone_lettuce">\
                 Lettuce
             </label>
         </td>
         <td height="7" width="87" align="left" valign="middle">
               <input type="checkbox" name="everyone_platter_topping[]" value="Tomatoes" id="everyone_tomatoes" />
               <label for="everyone_tomatoes">
                   Tomatoes
               </label>
          </td>
    </tr>
</table>

メールを受信すると、「Topping? - , , , 」しか表示されないことがあります。

これについて本当に助けが必要です。どんな提案でも大歓迎です!!

ありがとうございました!

4

2 に答える 2

1

ここに書き込んで申し訳ありませんが、コメントセクションはあなたの質問に関する疑問に言及するのに十分ではありません.

  • フォーム内の要素と PHP コードで使用される要素では、質問が明確にわかりません。
  • また$URL= "order.php"; header ("Location: $URL");、意味がありません。リダイレクトされ、とにかくメールは送信されません

この微妙な変更を加えると

  1. headerPHP コードからコードを削除する
  2. HTMLフォームにemail入力ボックスと送信ボタンを追加するsubmit
  3. メソッドで表の外にフォームを追加するPOST

上記の変更を問題なく行うことで、このコードが機能するようになりました。

質問を編集して再度質問するか、提案された変更を行うことをお勧めします (もちろん、あなたの側で微調整を行います)。そうすれば、コードは動作状態になります。

于 2012-07-10T19:58:48.177 に答える
-1

em を使用する前に、まず変数を初期化します。

$everyoneToppingList = null;
$everyoneCondimentList = null;
if (isset($_POST['submit'])){

  $everyoneToppingList = substr(implode(', ', $_POST['everyone_platter_topping']), 0);
  $everyoneCondimentList = substr(implode(', ', $_POST['everyone_platter_condiment']), 0);

}; 

$len = strlen($email);
if ($len > 0) 
{
    if (!is_null($everyoneToppingList) && !is_null($everyoneCondimentList))
    {
        // Send your mail.
    }
}
于 2012-07-10T19:43:07.343 に答える