0

我已经看到了许多与此类似的问题,但是由于我是 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>
4

3 回答 3

0

问题是$_POST['radio']您设置表单的方式不存在。只有带有 aname=的东西才会传递给$_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';
}

希望这可以帮助。

于 2013-03-05T04:33:00.943 回答
-1

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

<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']) { }当您发布时,应该绕过整个代码部分,而不仅仅是检查您是否是人类。

于 2013-03-05T02:41:09.967 回答
-1

尝试在单选按钮中反转名称和值

<input type="radio" name="to" value="Eval CH">Email Blah<br>
<input type="radio" name="to" value="Eval ELL">Email Sigh<br>
于 2013-03-05T02:43:16.800 回答