【问题标题】:PHP form going to different e-mail addresses depending on drop down selection [closed]PHP表单根据下拉选择转到不同的电子邮件地址[关闭]
【发布时间】:2013-05-06 14:39:21
【问题描述】:

所以我基本上没有使用 PHP 的经验,我需要创建一个 PHP 表单,根据用户的选择,它会发送到不同的电子邮件地址。

例如,下拉菜单将包含以下选项:服务、零件、人力资源等。

和这些选项中的每个选项将允许整个提交“姓名,电子邮件,电话号码等”。转到该特定部门的电子邮件地址。

我看到了一些与此类似的答案,但由于我对 PHP 的了解有限,我在创建它时遇到了很多麻烦。

有人可以帮帮我吗?

谢谢!

【问题讨论】:

  • 您想将您的代码添加到问题中吗?你试过什么了?什么不工作?

标签: php forms email


【解决方案1】:

您可以从您选择的字段中获取电子邮件的值并在发送邮件时使用它 像这样:

$mail['to'] = $_POST['mail']; 
//make sure to filter this using regex/etc.. 
//to make sure this is a valid email and is coming from your own form.

mail($mail['to'], $mail['subject'], $mail['body'], $mail['headers'])

我将把数据过滤留给你,但你应该明白。

编辑:

确保您过滤$_POST['mail'];,因为如果您没有过滤,这将是由于其他人向您的脚本提交电子邮件而导致的,这是一个巨大的安全漏洞。 可能的解决方案是使用随机数或 1 次使用令牌等。 尝试搜索邮件标头注入了解更多信息。

【讨论】:

  • 您将数据从 POST 直接传递到 mail()。这真的不是一个好主意。
  • 我在我的帖子中明确表示:“我将把数据过滤留给你,但你应该明白这一点。”。感谢您的反对。 ;)
  • 你确实提到了。但是您编写的代码中存在巨大的安全漏洞。该问题明确指出她对 PHP 的了解有限 - 如果您可以添加一些内容来解释她为什么需要过滤电子邮件,这将是一个更好的答案。
  • 那就行了 - 谢谢。
  • 谢谢。下次会尽力确保所有方面都得到解释。
【解决方案2】:

使用mail() 函数并根据发布的参数选择合适的电子邮件地址。请注意,允许未知用户直接通过您的服务器发送邮件可能不是一个好主意:如果mail() 的实现方式存在安全漏洞怎么办?为什么不将相关电子邮件地址放在网站上,并根据用户从下拉菜单中选择的条目仅显示正确的电子邮件地址?

【讨论】:

    【解决方案3】:

    你应该这样做:

    <?php
    // Check if form has been submitted
    if (isset($_POST["dep"])) {
    if ($_POST["dep"] == 1) {
    $email = "sales@example.com";
    }
    elseif ($_POST["dep"] == 2) {
    $email = "support@example.com";
    }
    // Send the email
    mail($email, "The subject", "The Body, "Some headers (optional)")
    }
    ?>
    <select name="dep">
    <optoin value="1">Sales</option>
    <optoin value="2">Support</option>
    </select>
    

    【讨论】:

      猜你喜欢
      • 2020-06-03
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-12
      • 1970-01-01
      • 2013-02-19
      相关资源
      最近更新 更多