2014-03-14 71 views
0

我想讓我的網站上的聯繫人表單根據用戶選中的複選框選擇郵件的收件人。PHP聯繫表單多個收件人,收件人列表取決於用戶選擇 - 複選框

用戶可以選擇最少一個收件人(選中一個複選框),最多十二個收件人(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 = "[email protected]"; 

    $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._%-][email protected][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。
  • 的選擇將通過檢查複選框
  • 每一個複選框被分配到特定的電子郵件

對不起,在這個「結論」再次重複自己進行 - 我想這是儘可能明確。此外,對不起我的瑣碎的問題...

回答

1

如果複選框的值在電子郵件,您只需要使用破滅() http://www.php.net/manual/pt_BR/function.implode.php

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

謝謝!我將使用這個解決方案。我不得不在HTML代碼中將「group1」更改爲「group1 []」 - 現在工作正常。 – Wuu

相關問題