在内嵌复选框

时间:2018-06-18 00:30:41

标签: php checkbox contact-form

我有一个能够正确传递所有值的表单。

但是,是否可以将所有内嵌的复选框值放在收到的电子邮件的单独行中?

此刻我可以只是一个|或者//或者值之间的任何值,但为了更容易阅读,我们希望单独的行上的值。

我的代码(是的,我知道它已经过时了):

//FORM PROCESSOR
// Specify your email here
$mail_to = 'xxxx.co.nz'; 

// Assigning data from $_POST array to variables
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$address = $_POST['address'];
$purchase = $_POST['purchase'];
$message = $_POST['message'];

// pulldown
$motor = $_POST['motor'];

//checkboxes
$options = implode(' | ', $_POST['checkboxes1']);


// Construct subject of the email
$subject = '700 Quote Form';

// Construct email body
$body_message = 'Name: ' . $name . "\r\n";
$body_message .= 'Email: ' . $email . "\r\n";
$body_message .= 'Phone: ' . $phone . "\r\n";
$body_message .= 'Address: ' . $address . "\r\n";
$body_message .= 'Boat Purchase Date: ' . $purchase . "\r\n";
$body_message .= 'Message: ' . $message . "\r\n";
$body_message .= 'Trailer Option: ' . $trailer . "\r\n";
$body_message .= 'Motor Option: ' . $motor . "\r\n";
$body_message .= 'Options: ' . $options . "\r\n";
$check_msg;

// Construct headers of the message
$headers = 'From: ' . $email . "\r\n";
$headers .= 'Reply-To: ' . $email . "\r\n";

$mail_sent = mail($mail_to, $subject, $body_message, $headers);

if ($mail_sent == true){ 
header('location: http://www.seaboss.co.nz/index.php/thanks');
exit;
}
?>

2 个答案:

答案 0 :(得分:1)

我假设发布的复选框值数组看起来像这样 - 其中每个值(此处:2,3,7)来自"值" 输入类型"复选框" 的属性,名称为" checkboxes1 []":

Array
(
    [0] =>  > 2
    [1] =>  > 3
    [2] =>  > 7
)

也就是说,最好将数组赋值与数组格式分开以便显示。最后一步是使用新行字符串(" \ r \ n")连接数组元素 - 导致在单独的行上显示每个数组值。

// Assignation of the posted array.    
$options = $_POST['checkboxes1'];

// Formatting for display.
$body_message .= 'Options:\r\n' . implode('\r\n', $options) . '\r\n';

如果您还要为每个数组值添加一个符号(例如">"),那么您必须应用中间前缀步骤:

// Assignation of the posted array.    
$options = $_POST['checkboxes1'];

// Prefixing array values.
foreach ($options as &$value) {
    $value = ' > ' . $value;
}

// Formatting for display.
$body_message .= 'Options:\r\n' . implode('\r\n', $options) . '\r\n';

关于前缀步骤,请注意使用参考符号("&")。因此,每个数组值都被直接修改,通过引用分配。

的更多细节

生成的电子邮件文本将如下所示:

Options:
 > 2
 > 3
 > 7

建议使用漂亮的模板构建电子邮件:postmark-templates项目。

答案 1 :(得分:1)

您可以使用PHP_EOL转到下一行。使用此PHP_EOL将有助于解决与使用Linux或Windows平台相关的问题。 例如:

$body_message = 'Name: ' . $name . PHP_EOL; $body_message .= 'Email: ' . $email . PHP_EOL;