2011-06-02 32 views
0

我已經創建了PHP的Web表單,並且我希望允許某人從選擇框中的收件人列表中進行選擇。這可能與PHP?我知道你可以將電子郵件作爲選項的值,但是有沒有更安全的方法?謝謝。Web表單的電子郵件路由PHP

編輯

我應該做的事情,如:

if ($_POST['emailTo']=="president") 
{ 
$to = [email protected]; 

else if ($_POST['emailTo']=="vice-president") 
{ 
$to = [email protected]; 
} 
mail("$to", "subject", message, $from); 
+0

我檢查了,我發佈的代碼的作品! – Dwayne 2011-06-02 21:19:32

回答

2

你主要關注的是濫用 - 惡意用戶可以更改POST請求,使你的代碼發送電子郵件到任何他們選擇的地址。

你應該包括在你的形式確保您的應用程序不是電子郵件地址本身,而是將電子郵件地址的引用。然後,您的代碼將需要提交的值轉換成一個電子郵件地址

一個簡單的例子是設置選擇框的選項爲整數值。您的代碼可以通過查找某種形式將選定的選項轉換爲電子郵件地址。

HTML:

<select name="recipient"> 
    <option value="1">Example 1</option> 
    <option value="2">Example 2</option> 
    <option value="3">Example 3</option> 
</select> 

PHP:

switch ($_POST['recipient') { 
    case 1: 
     $emailAddress = '[email protected]'; 
     break; 

    case 2: 
     $emailAddress = '[email protected]'; 
     break; 

    case 3: 
     $emailAddress = '[email protected]'; 
     break; 
} 
+0

+1指出這裏的濫用潛力。 – 2011-06-02 20:53:53

0

如果你想擁有它去多個電子郵件只需添加一個形式複選框所有的電子郵件地址。允許用戶檢查列表中的地址,然後將它們添加到收件人/發送到變量。讓它們逗號分開。我有一個例子,我曾經建造過一個類似於你所問的東西。讓我找到它。

編輯:找到它......

//編輯折線下面的要求

$email_to = "EMAIL1, EMAIL2, EMAIL3"; 

$email_subject = "Someone Signed Up! :)"; 

在$ EMAIL_TO部分只是有檢查郵件輸入到該字段。如果你想要我的整個劇本,我可以給你。你只需要爲該字段輸入一個表單輸入。

正如其他人所指出的,安全性是一個問題。如果只是有人想把這個功能像郵件系統一樣,那麼你可能會好起來,但如果它是一個自由的用戶類型的用戶,你可能想要限制這個表單的使用。只允許3個電子郵件被檢查,或者有3個字段可以用這種方式輸入,只有這麼多電子郵件可以一次發送。

0

在發送電子郵件的PHP代碼,你可以創建一個有效的收件人電子郵件的數組,如果用戶選擇的電子郵件是數組中,然後發送電子郵件,如果沒有,返回一個錯誤。所以你會有

$valid_emails = array("[email protected]", "[email protected]", "[email protected]", "[email protected]"); 

if(in_array($_REQUEST['recipient_email'], $valid_emails)) 
{ 
    send_email($_REQUEST['recipient_email']); 
} 
else 
{ 
    return_error("Invalid recipient email."); 
} 
相關問題