有没有更实用的方法用php发送非常大的表单?

有没有更实用的方法用php发送非常大的表单?,php,email,Php,Email,客户在其站点上有一个非常大的表单(大约40个字段),一旦用户单击submit,该表单就应该发送到他的邮件中 我想这样做: <? $name = $_REQUEST['name'] ; $lastname = $_REQUEST['lastname'] ; $address = $_REQUEST['lastname'] ; $field1 = $_REQUEST['field1'] ; $field2 = $_REQUEST['field2'] ; $field39 = $_REQUES

客户在其站点上有一个非常大的表单(大约40个字段),一旦用户单击submit,该表单就应该发送到他的邮件中

我想这样做:

<?

$name = $_REQUEST['name'] ;
$lastname = $_REQUEST['lastname'] ;
$address = $_REQUEST['lastname'] ;
$field1 = $_REQUEST['field1'] ;
$field2 = $_REQUEST['field2'] ;
$field39 = $_REQUEST['field39'] ;
....


$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= 'To: Bob <client@example.com>' . "\r\n";
$headers .= 'From: User <example@user.com>' . "\r\n";

// Mail it
mail("client@example.com", "FORM FROM YOUR WEB!", "Name: $name\r\n LastName: $lastname\r\n Address: $address\r\n       
Answer to field 1: $field1 ..... ", $headers);
?>


但由于有大约40个字段,我不确定我是否用正确的方法进行了操作。有没有更合适的方法

这在循环中使用以下方法并不困难:


您可以在循环中迭代所有表单字段并创建消息字符串

比如:

function contains($string, $subString)
{
  if (strpos($string, $subString) === false){
    return false;
  }
  return true;
}


foreach ($_REQUEST as $key => $value)
{
   if (!contains($key, "field")) continue;
   $msg .= $key;
   $msg .= $value;
}

//now content of your message with form is in $msg

如果使用foreach,则可以对字段进行不同的命名。然后,您反转continu的if条件并将其放在不应处理的字段中。

不用担心,这是一种非常常见的方法。最大电子邮件大小取决于提供商,但现在每个人都应该有10mb+

一个更详细的解决方案是保存一个工作表或文件(是的,php可以做到这一点)并通过邮件发送,但这需要做更多的工作


(顺便说一句,你可以循环你的字段以节省40次重复,例如,
foreach($field作为$field){…}

每次你看到重复-这是循环的工作为什么要用伪PHP写答案?!我没有想过用这种方式来使用foreach。谢谢,我会试试的!哦,我刚刚意识到了这个问题,这些字段并没有准确地命名为字段1,字段2,等等。我只是这样写来说明它是40个字段。但实际上每个字段都有不同的名称,比如:姓名、地址、电话、电子邮件、年龄等(40个不同的条目)。有没有一种方法可以在字段之间循环,但名称不同?@Ant100将所有字段名称组成一个数组(例如,
array('name'、'address'、'email')
),然后循环这些名称?我会试试,谢谢!
function contains($string, $subString)
{
  if (strpos($string, $subString) === false){
    return false;
  }
  return true;
}


foreach ($_REQUEST as $key => $value)
{
   if (!contains($key, "field")) continue;
   $msg .= $key;
   $msg .= $value;
}

//now content of your message with form is in $msg