问题描述:

I cant think anymore, stuck trying to make this work. I've got two radio buttons, how do I send the form to one of two email adresses depending on the button clicked. I am a total idiot on php, thank you.

html

<div class="col-md-8 contact-top">

<h3>Book here Online!</h3>

<form method="post" action="FormtoEmail/FormtoEmail.php">

<form role="form">

<div class="form-group">

<label for="name">Name:</label>

<input type="name" class="form-control" id="name" placeholder="Name">

</div> <div class="form-group">

<label for="email">Email address:</label>

<input type="email" class="form-control" id="email" placeholder="Email">

</div>

<div class="form-group">

<label for="subject">Subject:</label>

<input type="subject" class="form-control" id="subject" placeholder="Subject">

</div>

<div class="radio">

<label><input type="radio" name="recipients" value="recipient_1">Booking Accommodation</label>

</div>

<div class="radio">

<label><input type="radio" name="recipients" value="recipient_2" >Booking Conference</label>

</div>

<div class="form-group">

<textarea rows="11" name="message" id="message" class="form-control" placeholder="Details"></textarea>

</div>

<button type="submit" class="btn btn-default">Submit</button>

</form>

</div>

my php

<?php

$my_email = "[email protected]";

$continue = "/";

$errors = array();

// Remove $_COOKIE elements from $_REQUEST.

if(count($_COOKIE)){foreach(array_keys($_COOKIE) as $value){unset($_REQUEST[$value]);}}

// Check all fields for an email header.

function recursive_array_check_header($element_value)

{

global $set;

if(!is_array($element_value)){if(preg_match("/(%0A|%0D|\n+|\r+)(content-type:|to:|cc:|bcc:)/i",$element_value)){$set = 1;}}

else

{

foreach($element_value as $value){if($set){break;} recursive_array_check_header($value);}

}

}

recursive_array_check_header($_REQUEST);

if($set){$errors[] = "You cannot send an email header";}

unset($set);

// Validate email field.

if(isset($_REQUEST['email']) && !empty($_REQUEST['email']))

{

if(preg_match("/(%0A|%0D|\n+|\r+|:)/i",$_REQUEST['email'])){$errors[] = "Email address may not contain a new line or a colon";}

$_REQUEST['email'] = trim($_REQUEST['email']);

if(substr_count($_REQUEST['email'],"@") != 1 || stristr($_REQUEST['email']," ")){$errors[] = "Email address is invalid";}else{$exploded_email = explode("@",$_REQUEST['email']);if(empty($exploded_email[0]) || strlen($exploded_email[0]) > 64 || empty($exploded_email[1])){$errors[] = "Email address is invalid";}else{if(substr_count($exploded_email[1],".") == 0){$errors[] = "Email address is invalid";}else{$exploded_domain = explode(".",$exploded_email[1]);if(in_array("",$exploded_domain)){$errors[] = "Email address is invalid";}else{foreach($exploded_domain as $value){if(strlen($value) > 63 || !preg_match('/^[a-z0-9-]+$/i',$value)){$errors[] = "Email address is invalid"; break;}}}}}}

}

// Check referrer is from same site.

if(!(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) && stristr($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']))){$errors[] = "You must enable referrer logging to use the form";}

// Check for a blank form.

function recursive_array_check_blank($element_value)

{

global $set;

if(!is_array($element_value)){if(!empty($element_value)){$set = 1;}}

else

{

foreach($element_value as $value){if($set){break;} recursive_array_check_blank($value);}

}

}

recursive_array_check_blank($_REQUEST);

if(!$set){$errors[] = "You cannot send a blank form";}

unset($set);

// Display any errors and exit if errors exist.

if(count($errors)){foreach($errors as $value){print "$value<br>";} exit;}

if(!defined("PHP_EOL")){define("PHP_EOL", strtoupper(substr(PHP_OS,0,3) == "WIN") ? "\r\n" : "\n");}

// Build message.

function build_message($request_input){if(!isset($message_output)){$message_output ="";}if(!is_array($request_input)){$message_output = $request_input;}else{foreach($request_input as $key => $value){if(!empty($value)){if(!is_numeric($key)){$message_output .= str_replace("_"," ",ucfirst($key)).": ".build_message($value).PHP_EOL.PHP_EOL;}else{$message_output .= build_message($value).", ";}}}}return rtrim($message_output,", ");}

$message = build_message($_REQUEST);

$message = $message . PHP_EOL.PHP_EOL."-- ".PHP_EOL."";

$message = stripslashes($message);

$subject = "Out of Africa Town Lodge Contact Form";

$headers = "From: " . $_POST['email'];

$recipients = array(

'recipient_1' => '[email protected]',

'recipient_2' => '[email protected]'

);

$my_email = $recipients[$_REQUEST['recipient']];

mail($my_email,$subject,$message,$headers);

?>

网友答案:

You need to use a radio button group with same name but value with different email id

<div class="radio">
   <label><input type="radio" name="recipients" value="[email protected]">
        Booking Accommodation
   </label>
</div>
<div class="radio">
   <label><input type="radio" name="recipients" value="[email protected]" >
        Booking Conference
   </label>
</div>

That way you can select one from two radio

in FormtoEmail.php

//use post to get the email id
$to = $_POST['recipients'];

and send mail using PHPMailer, its great library and will make your life easier

网友答案:

May you want use this code:

<?php
if(isset($_POST['recipients']) && $_POST['recipients'] == 'recipient_1') {
   // send to recipient_1
} else {
   // send to recipient_2
}
?>
网友答案:
  $my_email = $recipients[$_REQUEST['recipient']];

There is a typo in $_REQUEST variable, it would be $recipients[$_REQUEST['recipients']];

Hope it will work now. It could be more easily done in anyway.

相关阅读:
Top