发送联系表格电子邮件地址基于选择
问题描述:
我有,有一个下拉菜单选择查询应该去哪个部门联系表格...发送联系表格电子邮件地址基于选择
<form action="contact-send.php" id="callback" method="post">
<ul>
<li class="left">
<label for="name"><span class="required">*</span> Your Name</label>
<br>
<input type="text" id="name" name="name" value="<?php echo ($sr && !$cf['form_ok']) ? $cf['posted_form_data']['name'] : '' ?>" placeholder="John Doe" required autofocus /></li>
<li class="right">
<label for="email"><span class="required">*</span> Email Address</label>
<br>
<input type="email" id="email" name="email" value="<?php echo ($sr && !$cf['form_ok']) ? $cf['posted_form_data']['email'] : '' ?>" placeholder="[email protected]" required /></li>
<div class="clear"></div>
<li class="left">
<label for="enquiry"><span class="required">*</span> Enquiry</label><br>
<select id="enquiry" name="enquiry">
<option value="Admin/Accounts enquiry" <?php echo ($sr && !$cf['form_ok'] && $cf['posted_form_data']['enquiry'] == 'Admin/Accounts enquiry') ? "selected='selected'" : '' ?>>Admin/Accounts enquiry</option>
<option value="Plant Hire/Haulage/Recycling/Contract Earthworks" <?php echo ($sr && !$cf['form_ok'] && $cf['posted_form_data']['enquiry'] == 'Plant Hire/Haulage/Recycling/Contract Earthworks') ? "selected='selected'" : '' ?>>Plant Hire/Haulage/Recycling/Contract Earthworks</option>
<option value="Waste Management/Skip Hire" <?php echo ($sr && !$cf['form_ok'] && $cf['posted_form_data']['enquiry'] == 'Waste Management/Skip Hire') ? "selected='selected'" : '' ?>>Waste Management/Skip Hire</option>
</select></li>
<li>
<label for="message"><span class="required">*</span> Message</label><br />
<textarea id="message" name="message" placeholder="Your message must be greater than 20 charcters" required data-minlength="20"><?php echo ($sr && !$cf['form_ok']) ? $cf['posted_form_data']['message'] : '' ?></textarea>
</li>
</ul>
<div class="clear"></div>
<p class="form-button right"><input class="submit" id="callback-submit" name="submit" value="Send" type="submit"></p>
</form>
我试图找出如何修改以下过程脚本,以便它发送询问指定的电子邮件地址,这取决于所选择部门...
<?php
function clean_input($input){
return strip_tags(trim($input));
}
if(isset($_POST)){
//form validation vars
$formok = true;
$errors = array();
//sumbission data
$ipaddress = $_SERVER['REMOTE_ADDR'];
$date = date('d/m/Y');
$time = date('H:i:s');
//form data
$name = clean_input($_POST['name']);
$email = clean_input($_POST['email']);
$enquiry = clean_input($_POST['enquiry']);
$message = clean_input($_POST['message']);
//validate form data
//validate name is not empty
if(empty($name)){
$formok = false;
$errors[] = "You have not entered a name";
}
//validate email address is not empty
if(empty($email)){
$formok = false;
$errors[] = "You have not entered an email address";
//validate email address is valid
}elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$formok = false;
$errors[] = "You have not entered a valid email address";
}
//validate message is not empty
if(empty($message)){
$formok = false;
$errors[] = "You have not entered a message";
}
//validate message is greater than 20 charcters
elseif(strlen($message) < 20){
$formok = false;
$errors[] = "Your message must be greater than 20 characters";
}
//send email if all is ok
if($formok){
ini_set("sendmail_from","EMAIL_ADDRESS");
$headers = "From: EMAIL_ADDRESS" . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$emailbody = "<p>You have received a new contact us enquiry.</p>
<p><strong>Name: </strong> {$name} </p>
<p><strong>Email: </strong> {$email} </p>
<p><strong>Enquiry: </strong> {$enquiry} </p>
<p><strong>Message: </strong> {$message} </p>
<p>This message was sent from the IP Address: {$ipaddress} on {$date} at {$time}</p>";
mail("EMAIL_ADDRESS","Contact us enquiry",$emailbody,$headers);
}
//what we need to return back to our form
$returndata = array(
'posted_form_data' => array(
'name' => $name,
'email' => $email,
'enquiry' => $enquiry,
'message' => $message
),
'form_ok' => $formok,
'errors' => $errors
);
//if this is not an ajax request
if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest'){
//set session variables
session_start();
$_SESSION['cf_returndata'] = $returndata;
//redirect back to form
header('location: ' . $_SERVER['HTTP_REFERER']);
}
}
我将不胜感激,如果有人可以提供一些指引。
谢谢。
答
使用您用来表示部门的表单元素的名称,只需使用切换案例来更改送货地址?
值得注意的是,较简单的值(如admin_enquiry
而非管理员/帐户查询)可能更容易与之匹配。
switch ($select_department)
{
case "admin_enquiry":
// Set to email as appropriate
}
答
要做到这一点,最好的办法是建立数据库表(或只是confing/PHP数组)是这样的:
CREATE TABLE `departments` (
id INT AUTO_INCREMENT,
name VARCHAR(255),
email VARCHAR(255),
PRIMARY (id)
);
打印为:
$selected = isset($_POST['department']) ? $_POST['department'] : '';
echo '<select name="department">';
foreach($db->fetch_all('SELECT * FROM departments') as $dep){
echo '<option value="' . $dep['id'] . '"' .
(($dep['id'] == $selected) ? 'selected="selected"' : '')
. '>' . htmlspecialchars($dep['name']) . '</option>';
}
和发送时:
$email = '';
if(!isset($_POST['department'])){
$formok = false;
$errors[] = "Department not send";
} elseif($row = $db->fetch_row('SELECT email FROM departments WHERE id = ?', array($_POST['department'])){
$email = $row['email']
} else {
$formok = false;
$errors[] = "Invalid department";
}
/// ...
mail($email, ...);