Добавить поля ввода формы в E-mail с помощью PHP и Jquery
Я использовалЭтот учебник по созданию контактной формы на моем сайте. К сожалению, количество полей для меня недостаточно, поэтому я добавил в форму компанию и поле темы.
Однако .. Я не могу получить вывод почты, работающий с дополнительными полями.
Быстрый обзор:
HTML:
Each input field in the HTML is based on the following piece of lines:
<label>Subject</label>
<input type="text" id="subject" placeholder="What's up?"></div>
JQuery:
The full jQuery code is:
$(document).ready(function() {
// Contact Form
$("#contactform").submit(function(e){
e.preventDefault();
var name = $("#name").val();
var company = $("#company").val();
var email = $("#email").val();
var subject = $("#subject").val();
var text = $("#text").val();
var dataString = 'name=' + name + + '&company' + company + '&email=' + email + '&subject' + subject + '&text=' + text;
function isValidEmail(emailAddress) {
var pattern = new RegExp(/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i);
return pattern.test(emailAddress);
};
if (isValidEmail(email) && (text.length > 25) && (name.length > 1)){
$.ajax({
type: "POST",
url: "js/functions.php",
data: dataString,
success: function(){
$('.success').fadeIn(1000);
}
});
} else{
$('.error').fadeIn(1000);
}
return false;
});
});
И весь скрипт functions.php:
<?php
// Email Submit
// Note: filter_var() requires PHP >= 5.2.0
if ( isset($_POST['email']) && isset($_POST['name']) && isset($_POST['text']) && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ) {
// detect & prevent header injections
$test = "/(content-type|bcc:|cc:|to:)/i";
foreach ( $_POST as $key => $val ) {
if ( preg_match( $test, $val ) ) {
exit;
}
}
//send email
mail( "[email protected]", "New message: ".$_POST['name'], $_POST['text'], "From:" . $_POST['email'] );
}
?>
Итак, вот где мы находимся: форма отправляется, и я получаю письмо, однако дополнительные поля ($ ('subject)) и $ (' # company ')) не отображаются в электронном письме.
Итак, есть две вещи, которые я хочу достичь в этой теме: 1) Поля «Тема» и «Компания» появляются в сообщении электронной почты. 2) Получаемое письмо имеет следующую структуру:
Subject line: 'You received a new message: ' + 'subject'
Message body: 'You received a new mail via your contact form<br/>
Name: 'name'
Company: 'company'
Reply to: 'email'
Subject: 'subject'
Message: 'text'
Я попытался настроить линию - потому что я думал, что это решит все это:
//send email
mail( "[email protected]", "New message: ".$_POST['name'], $_POST['text'], "From:" . $_POST['email'] );
Но удача была не со мной. Итак, основываясь на приведенных выше фрагментах кода, какие строки мне нужно настроить и что мне нужно добавить?
Большое спасибо, ребята!