2013-03-05 61 views
0

我见过很多与此类似的问题,但由于我是PHP新手,我很难将该功能放在正确的位置。我已经用PHP和HTML拼凑了一些东西,但我似乎错过了$radio区域的一些东西。有没有人有什么建议?发送PHP表单到基于单选按钮的不同电子邮件

<?php 
$name = $_POST['name']; 
$email = $_POST['email']; 
$radio = isset($_POST['radio']) ? $_POST['radio'] : 'default'; 
switch ($radio) { 
case 'Eval CH': 
$to = '[email protected]'; 
    break; 
case 'Eval ELL': 
$to = '[email protected]'; 
    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> 

回答

0

的问题是,$_POST['radio']不存在你有你的表格设置的办法扭转名称和值。只有带有name=的东西才会被传递给$_POST超全球。

变化在你的PHP处理程序的条件是:

但是,你真的有3个条件,在这里:

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

所以真的是你的速记不在这里工作了,因为你需要

if 
elseif 
else 

所以你真的需要更多adv像这样:

if (isset($_POST['Eval CH'])) { 
    $to = '[email protected]'; 
} 
elseif (isset($_POST['Eval ELL'])) { 
    $to = '[email protected]'; 
} 
else { 
    $to = '[email protected]'; 
} 

希望这会有所帮助。

-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']) { }应该去周围的代码,整段当您发布,不只是检查你是否是人。

+0

这也不起作用。将两个项目命名为相同的东西时,将信息提交给服务器时会丢失一个或另一个项目。 – 2013-03-05 04:25:06

+1

是的,我知道。这些是单选按钮而不是复选框。这是应该的。非此即彼。为什么downvote? – SeanWM 2013-03-05 13:13:50

+0

我的不好。我想,当我非常疲倦时,我不应该试图用他们的代码来帮助别人。 – 2013-03-05 14:03:56

-1

尝试在单选按钮

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

这不会有所作为。总是可以适应PHP处理程序本身。 – 2013-03-05 04:15:48

相关问题