-2

客户在他的网站上有一个非常大的表单(大约 40 个字段),一旦用户单击提交,就应该将其发送到他的邮箱。

我正在考虑这样做:

<?

$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 个字段,我不确定我是否以正确的方式进行操作。有没有更合适的方法来做到这一点?

4

3 回答 3

0

使用以下方法在循环中做到这一点并不难range

foreach(range(1, 39) as $number) {
    $message .= "Answer to field $number: " . $_REQUEST['field' . $number] . "\n";
}
于 2013-06-01T15:12:21.187 回答
0

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

就像是:

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,您可以以不同的方式命名您的字段。然后你反转 if 条件为 continu 并放在那里,那不应该被处理。

于 2013-06-01T15:12:25.747 回答
0

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

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

(顺便说一句,您可以循环您的字段以节省 40 次重复,例如foreach ($fields as $field) {...}

于 2013-06-01T15:13:51.870 回答