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. 从 PHP 代码中删除header代码
  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 回答