【问题标题】:Send PHP Form to Different Emails Based on Radio Buttons根据单选按钮将 PHP 表单发送到不同的电子邮件
【发布时间】:2013-02-19 07:50:04
【问题描述】:

我见过许多与此类似的问题,但由于我是 PHP 新手,所以我无法将函数放在正确的位置。我在 PHP 和 HTML 中拼凑了一些东西,但我似乎在 $radio 区域周围遗漏了一些东西。有人有什么建议吗?

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$radio = isset($_POST['radio']) ? $_POST['radio'] : 'default';
switch ($radio) {
case 'Eval CH':
$to = 'blah@blah.com';
    break;
case 'Eval ELL':
$to = 'sigh@sigh.com';
    break;
}
$message = $_POST['message'];
$from = 'From: WAC Site';  
$subject = 'WAC Contact Message';
$human = $_POST['human'];

$body = "From: $name\n E-Mail: $email\n Message:\n $message";

if ($_POST['submit'] && $human == '4') {                 
    if (mail ($to, $subject, $body, $from)) { 
    echo '<p>Your message has been sent!</p>';
} else { 
    echo '<p>Something went wrong, go back and try again!</p>'; 
} 
} else if ($_POST['submit'] && $human != '4') {
echo '<p>Either you are a robot, or you are very, very bad at math.</p>';
}
?>

这是我的 HTML:

<form method="post" action="contact_options.php">

<label>Name</label><br>
<input name="name" placeholder="Type Here"><br>
<br>        
<label>Email</label><br>
<input name="email" type="email" placeholder="Type Here"><br>
<br>
<input type="radio" name="Eval CH" value="to">Email Blah<br>
<input type="radio" name="Eval ELL" value="to">Email Sigh<br>
<label>Message</label><br>
<textarea name="message" placeholder="Type Here"></textarea><br>
<br>
<label>*What is 2+2? (Anti-spam)</label>
<input name="human" placeholder="Type Here"><br />         
<input id="submit" name="submit" type="submit" value="Submit"><br>

</form>

【问题讨论】:

    标签: php forms radio-button contact


    【解决方案1】:

    问题是$_POST['radio'] 不存在您设置表单的方式。只有带有name= 的东西才会传递给$_POST 超全局。

    将 PHP 处理程序中的条件更改为:

    $radio = isset($_POST['Eval CH']) ? $_POST['Eval CH'] : $_POST['Eval ELL'];

    但是,这里确实有 3 个条件:

    $_POST['Eval CH']
    $_POST['Eval ELL']
    None selcted
    

    所以实际上你的速记在这里不起作用,因为你需要

    if
    elseif
    else
    

    所以你真的需要更高级的处理,像这样:

    if (isset($_POST['Eval CH'])) {
       $to = 'blah@blah.com';
    }
    elseif (isset($_POST['Eval ELL'])) {
       $to = 'sigh@sigh.com';
    }
    else {
       $to = 'default@default.com';
    }
    

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      您的单选按钮应该有一个通用名称和适当的值。它们应该如下所示:

      <input type="radio" name="contact_option" value="Eval CH">Email Blah<br>
      <input type="radio" name="contact_option" value="Eval ELL">Email Sigh<br>
      

      然后,在您的帖子中,您可以将您的行替换为:

      $radio = isset($_POST['contact_option']) ? $_POST['contact_option'] : 'default';
      

      此外,if ($_POST['submit']) { } 应该在您发布时绕过整段代码,而不仅仅是检查您是否是人类。

      【讨论】:

      • 这也行不通。如果有两个项目名称相同,则在向服务器提交信息时会丢失一个或另一个。
      • 是的,我知道。这些是单选按钮而不是复选框。这是应该的。非此即彼。为什么投反对票?
      • 我的错。我想我不应该在我这么累的时候试图帮助别人编写代码。
      • 对不起,我不能。 SO在一定时间后不允许这样做。今天早上在我离开之前尝试这样做,但即便如此也为时已晚。
      【解决方案3】:

      尝试在单选按钮中颠倒名称和值

      <input type="radio" name="to" value="Eval CH">Email Blah<br>
      <input type="radio" name="to" value="Eval ELL">Email Sigh<br>
      

      【讨论】:

      • 这不会有什么不同。始终可以适应 PHP 处理程序本身。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多