【问题标题】:PHP form to send email and redirect based on dropdown selection基于下拉选择发送电子邮件和重定向的 PHP 表单
【发布时间】:2011-11-03 23:45:52
【问题描述】:

我一直在寻找一种方法来设置我认为简单的表单并使用 php 进行重定向。我发现了类似的想法,但没有人回答或最终因我的情况太不同而无法工作。我对此很陌生,所以请原谅我对这个问题的无知。非常感谢任何帮助,即使是正确方向的一点。

我想设置一个表单,其中包含一个文本框(供他们输入姓名)和一个包含学校名称列表的下拉框。用户应该输入他们的名字,选择他们的学校,然后点击去或提交。

一旦完成,我希望表单做两件事。将带有人员姓名的电子邮件发送到预定义的电子邮件地址(始终是相同的电子邮件地址),然后根据下拉框中选择的学校重定向页面。基本上,发送给我的带有人名和学校 1 的电子邮件将发送至 www.address1.com,学校 2 将发送至 www.address2.com 等。当网站完成时,我可能最终会收到 30-40 所学校最终只有 10-12 个地址目的地,因为一些学校将被重定向到相同的站点地址。

再次感谢您提供的任何帮助。

【问题讨论】:

  • 您是否只想通过电子邮件发送未选择学校的人的姓名?
  • @Martin。我确实发布了我所做的事情,并提到我不知道该怎么做。我还说指出我正确的方向也会有所帮助。这些信息也很可能在未来对其他人有所帮助。
  • @丹尼尔。它可以在没有学校名称的情况下工作,因为我们可以手动将人名添加到现场选择的学校。如果表格发送学校名称和人名,那也很棒。
  • 我更新了代码,使电子邮件包含选定的学校和人员姓名。感谢您提供给我的代码。

标签: php forms email redirect drop-down-menu


【解决方案1】:

首先,将所有学校放入数据库,并构建一个自动化脚本,根据数据库输入生成表单。根据您写的内容,您至少需要一个 ID、学校名称和学校的 http 地址。

发送电子邮件很简单,并且可以使用 mail() 函数 - 或者像 MIMEMail 这样非常奇特的东西。

重定向浏览器适用于header('Location: @987654321@'); - 确保在标头之前没有输出(感谢 Travis 提及)

【讨论】:

  • 有没有办法在不使用数据库的情况下做到这一点?我将在下拉框中预先确定学校名称供他们选择。很可能只有 4-5 个开始,直到程序起飞。我可以制作下拉列表并将其重定向到一个地址(参见此处 www.subwayeasy.com/schools.html),但在从输入框中获取信息后无法添加发送电子邮件的功能(尚未在现场以前链接到)。不幸的是,我不知道如何使用数据库。我可能不是很有帮助,所以对此我深表歉意。
  • 您也可以使用纯文本文件或类似 XML 的文件来执行此操作。但是,您应该将学校名称放在 HTML 代码中,因为这将被证明是稍后维护的 PITA。如果您需要尽快完成,请写信给我 martin.hohenberg@gmail.com
  • 只要确保header之前没有输出,否则会报错。
  • @Kieth 数据库可能是最好的方法,即使现在它会增长。您还可以使用 $school[]$school_url[] 之类的东西将学校硬编码到 PHP 文件中,更不用说使用 MySQL 并不太难。您可以在 Internet 上找到操作方法。
  • 非常感谢大家的帮助。我将使用提供的代码,看看我能想出什么。如果我以后有类似情况的其他人可以使用它,我会回帖告诉你。
【解决方案2】:

希望对你有帮助:

<?php

if(isset($_POST['submit']))
{
    mail('you@example.com','Some subject',$_POST['name']);
    switch($_POST['school'])
    {
      case 'school1':
        header('Location: http://school1.com');
        break;
      case 'school2':
        header('Location: http://school2.com');
        break;
    }
}

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <label for="name">Name:</label> <input name="name" type="text" id="name" />
    <label for="school">School:</label>
    <select id="school" name="school">
        <option value="school1">School1</option>
        <option value="school2">School2</option>
    </select>
    <input type="submit" name="submit" value="Submit" />
</form>

【讨论】:

  • 我希望 Keith 能看到与 >10 所学校一起维护这一点的乐趣 :)
  • 它变得沉重,这是真的。但这只需要一个 Apache 和一个邮件服务器即可运行。
  • 非常感谢丹尼尔。我很感激时间和精力。我会让你知道结果如何。
  • @Daniel - 这对我来说非常有效。非常感谢。你是救生员。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-30
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多