PHP联系人表单多个收件人,收件人列表依赖于用户选择-复选框


PHP contact form multiple recipients, recipient list dependent on user choice - checkboxes

我想让我的网站上的联系人表单根据用户选中的复选框来选择消息的收件人。

用户可以选择最少一个收件人(选中1个复选框),最多12个收件人(12个人可以问问题-这是用户选择他想联系谁)。

由于我不是很熟练的php,我将非常感谢您的帮助。

这里是html:

<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="group1" value="1"></div>
<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="group1" value="2"></div>
<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="group1" value="3"></div>
<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="group1" value="4"></div>
<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="group1" value="5"></div>
<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="group1" value="6"></div>
<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="group1" value="7"></div>
<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="group1" value="8"></div>
<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="group1" value="9"></div>
<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="group1" value="10"></div>
<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="group1" value="11"></div>
<input class="validate[minCheckbox[1]] checkbox" type="checkbox" name="group1" value="12"></div>
下面是php代码:
<?php
if(isset($_POST['email'])) {
    // CHANGE THE TWO LINES BELOW
    $email_to = "me@mydomain.com";
    $email_subject = "";

    function died($error) {
        // your error code can go here
        echo "";
        echo "";
        echo $error."<br /><br />";
        echo "";
        die();
    }
    // validation expected data exists
    if(!isset($_POST['name']) ||
        !isset($_POST['email']) ||
        !isset($_POST['telephone']) ||
        !isset($_POST['comments'])) {
        died(');       
    }
    $name = $_POST['name']; // required
    $email_from = $_POST['email']; // required
    $telephone = $_POST['telephone']; // not required
    $comments = $_POST['comments']; // required
    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+'.[A-Za-z]{2,4}$/';
  if(!preg_match($email_exp,$email_from)) {
    $error_message .= '';
  }
    $string_exp = "/^[A-Za-z .'-]+$/";
  if(!preg_match($string_exp,$name)) {
    $error_message .= '';
  }
  if(strlen($comments) < 2) {
    $error_message .= '';
  }
  if(strlen($error_message) > 0) {
    died($error_message);
  }
    function clean_string($string) {
      $bad = array("content-type","bcc:","to:","cc:","href");
      return str_replace($bad,"",$string);
    }
       $email_message .='
//html structure of email goes here
$headers = 'From: '.$email_from."'r'n".
$headers = "MIME-Version: 1.0'r'n";
$headers = "Content-type: text/html; charset=utf-8'r'n";
'Reply-To: '.$email_from."'r'n" .
'X-Mailer: PHP/' . phpversion();
@mail($email_to, $email_subject, $email_message, $headers);  
?>
<!-- success html here -->
<?php
}
die();
?>

当前状态下的代码工作得很好(我删除了错误消息和电子邮件的html结构,因为它是不相关的-只会占用空间),但有固定的收件人(虽然它们在这里的代码$email_to中提供)。

我想更改代码,以便:

  • 用户选择消息的接收人,有12个选项,最小=1,最大=12。
  • 将通过勾选
  • 复选框来做出选择
  • 每个复选框分配给特定的电子邮件

很抱歉在这个"结论"中再次重复我自己-我希望它尽可能清楚。

如果checkbox的值是电子邮件,则只需使用implode()http://www.php.net/manual/pt_BR/function.implode.php

$emails = implode(",",$_REQUEST['group1']);
$email_to = $emails;