Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
419 views
in Technique[技术] by (71.8m points)

Send PHP Form to Different Emails Based on Radio Buttons

I've seen a number of questions similar to this one, but since I'm new to PHP I'm having trouble putting the function in the right place. I've got something cobbled together in PHP and HTML but I seem to be missing something around the $radio area. Does anyone have any suggestions?

<?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
 E-Mail: $email
 Message:
 $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>';
}
?>

Here's my 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>
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The problem is that $_POST['radio'] doesn't exist the way you have your form setup. Only things with a name= are passed to the $_POST superglobal.

Change the condition in your PHP handler to this:

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

But, you really have 3 conditions here:

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

So really your shorthand doesn't work here because you need

if
elseif
else

So you really need more advanced handling, like so:

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

Hope this helps.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...