web表单PHP的电子邮件路由

web表单PHP的电子邮件路由,php,email,forms,select,routing,Php,Email,Forms,Select,Routing,我已经用PHP创建了一个web表单,我想允许某人从选择框中的收件人列表中进行选择。这在PHP中是可能的吗?我知道你可以将电子邮件作为选项的价值,但有没有更安全的方法?谢谢 编辑: 我应该做一些类似于: if ($_POST['emailTo']=="president") { $to = president@example.com; else if ($_POST['emailTo']=="vice-president") { $to = vPresident@example.com; } m

我已经用PHP创建了一个web表单,我想允许某人从选择框中的收件人列表中进行选择。这在PHP中是可能的吗?我知道你可以将电子邮件作为选项的价值,但有没有更安全的方法?谢谢

编辑

我应该做一些类似于:

if ($_POST['emailTo']=="president")
{
$to = president@example.com;

else if ($_POST['emailTo']=="vice-president")
{
$to = vPresident@example.com;
}
mail("$to", "subject", message, $from);
您主要担心的是滥用-恶意用户可以更改POST请求,并导致您的代码向他们选择的任何地址发送电子邮件

您应该通过在表单中不包含电子邮件地址本身,而是包含对电子邮件地址的引用来保护您的应用程序。然后,您的代码需要将提交的值转换为电子邮件地址

一个简单的例子是将选择框选项设置为整数值。您的代码可以通过查找某些表单将所选选项转换为电子邮件地址

HTML:


如果你想让它转到多封电子邮件,只需添加一个带有所有电子邮件地址复选框的表单。允许用户检查列表中的地址,然后将其添加到收件人/发送到变量中。用逗号分隔。我有一个例子,我曾经做过一次,就像你问的那样。让我找到它

编辑:找到了

//根据需要编辑下面的行

$email_to = "EMAIL1, EMAIL2, EMAIL3";

$email_subject = "Someone Signed Up! :)";
在$email_to部分,只需将检查过的电子邮件输入该字段。如果你想要我的全部剧本,我可以给你。您只需要为该字段进行表单输入


正如其他人所指出的,安全是一个问题。如果只是有人想要这个功能,比如邮件系统,你可能还可以,但是如果它是一个免费的用户,你可能想限制表单的使用。只允许检查3封电子邮件,或者有3个字段可以输入,这样一次只能发送这么多电子邮件。

在发送电子邮件的PHP代码中,您可以创建一个有效收件人电子邮件数组,如果用户选择的电子邮件在数组中,则发送电子邮件,否则返回错误。所以你会

$valid_emails = array("validemail1@email.com", "validemail2@email.com", "validemail3@email.com", "validemail4@email.com");

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

我查过了,我发布的代码有效!
$email_to = "EMAIL1, EMAIL2, EMAIL3";

$email_subject = "Someone Signed Up! :)";
$valid_emails = array("validemail1@email.com", "validemail2@email.com", "validemail3@email.com", "validemail4@email.com");

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