Итак, я немного нуб, когда дело доходит до всего этого … Однако сейчас я нахожусь в критическом состоянии после попытки заставить это функционировать в течение почти 10 часов сегодня, все, что я пытался, похоже, не сработало, поэтому любой совет будет действительно нужно ценить
Письма отправляются нормально, но по прибытии они показывают только:
Название:
Фамилия:
Эл. адрес:
Сообщение:
Я не смог получить ничего, кроме этого, чтобы пройти.
Мой код PHP:
<?php
header('Content-type: application/json');
$status = array(
'type'=>'success',
'message'=>'Email sent!'
);
$name = $_POST['name'];
$surname = $_POST[‘surname’];
$email = $_POST[‘email’];
$message = $_POST[‘message’];
$subject = "Contact Form Submission";
$email_from = $email;
$email_to = '[email protected]';
$body = 'Name: ' . $name . "\n\n" . 'Surname: ' . $surname . "\n\n" . 'Email: ' . $email . "\n\n" . 'Message: ' . $message;
$success = mail($email_to, $subject, $body, 'From: <'.$email_from.'>');
echo json_encode($status);
die;
Основное кодирование JS выглядит следующим образом:
//contact form
var form = $(‘.contact-form’);
form.submit(function () {
$this = $(this);
$.post($(this).attr(‘action’),$(‘.contact-form’).serialize(), function(data) {
$this.prev().text(data.message).fadeIn().delay(3000).fadeOut();
$this.closest(‘.contact-form’).find(“input[type=text], input[type=email], textarea”).val(“”);
},’json’);
return false;
});
//goto top
$(‘.gototop’).click(function(event) {
event.preventDefault();
$(‘html, body’).animate({
scrollTop: $(“body”).offset().top
}, 500);
});
И HTML-код:
<h4>Contact Form</h4>
<form id="main-contact-form" class="contact-form" name="contact-form"
method="post" action="sendemail.php" role="form">
<div class="row">
<div class="col-sm-5">
<div class="form-group"> <input class="form-control" required="required"
placeholder="Name" type="text"> </div>
<div class="form-group"> <input class="form-control" required="required"
placeholder="Surname" type="text"> </div>
<div class="form-group"> <input class="form-control" required="required"
placeholder="Email" type="text"> </div>
<div class="form-group"> <button type="submit" class="btn btn-primary btn-lg">Send
Message</button> </div>
</div>
<div class="col-sm-7"> <textarea name="message" id="message" required="required"
class="form-control" rows="8" placeholder="Message"></textarea>
<input name="subject" value="Form submission" type="hidden"> </div>
</div>
</form>
</div>
Если кто-то может помочь мне получить эту работу, я был бы очень признателен, как и мое здравомыслие!
Заранее спасибо.
Трудно точно определить причину проблемы, но есть несколько проблем, в том числе;
serialize()
делать свою работуЕсли бы это был я, я бы использовал ajax для этого и вот как:
HTML:
<div class="row">
<h4>Contact Form</h4>
<div id="data"></div>
<form id="main-contact-form" class="contact-form" name="contact-form" method="post" action="sendemail.php" role="form">
<div class="row">
<div class="col-sm-5">
<div class="form-group">
<input class="form-control" required="required" placeholder="Email to send to.. (Added for the demo)" name="to" type="text">
</div>
<div class="form-group">
<input class="form-control" required="required" placeholder="Name" name="name" type="text">
</div>
<div class="form-group">
<input class="form-control" required="required" placeholder="Surname" name="surname" type="text">
</div>
<div class="form-group">
<input class="form-control" required="required" placeholder="Email" name="email" type="text">
</div>
<div class="form-group">
<textarea required class="form-control" rows="8" placeholder="Message" name="message"></textarea>
<input name="subject" value="Form submission" type="hidden">
</div>
</div>
</div>
<div class="form-group">
<button id="submit" class="btn btn-primary btn-lg">Send Message</button>
</div>
</form>
</div>
JavaScript:
$(function() {
//contact form
$('#main-contact-form').submit(function(event) {
event.preventDefault(); // stop the normal form submission
var sendVars = $(this).serialize();
$.ajax({
type: "POST",
url: "sendemail.php",
data: sendVars,
dataType: 'json',
success: function(data) {
// do stuff...
console.log(data);
$('#data').text(data.message).fadeIn().delay(3000).fadeOut();
$('#main-contact-form').find('input, textarea').val('');
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
});
//goto top
$('.gototop').click(function(event) {
event.preventDefault();
$('html, body').animate({
scrollTop: $('body').offset().top
}, 500);
});
});
PHP
<?php
//ini_set('display_errors',1); //error reporting if needed
//ini_set('display_startup_errors',1);
//error_reporting(-1);
header('Content-type: application/json');
$status = array( 'fail'=>array('type'=>'failure',
'message'=>'Email Failed!'),
'succeed'=>array('type'=>'success',
'message'=>'Email Sent!'));
$name = isset($_POST['name']) ? htmlspecialchars($_POST['name']): null;
$surname = isset($_POST['surname']) ? htmlspecialchars($_POST['surname']): null;
$email = isset($_POST['email']) ? htmlspecialchars($_POST['email']): null;
$message = isset($_POST['message']) ? htmlspecialchars($_POST['message']): null;
$subject = "Contact Form Submission";
$email_from = $email;
$email_to = isset($_POST['message']) ? htmlspecialchars($_POST['to']): null;
$body = 'Name: ' . $name . "\n\n" . 'Surname: ' . $surname . "\n\n" . 'Email: ' . $email . "\n\n" . 'Message: ' . $message;
if(mail($email_to, $subject, $body, 'From: <'.$email_from.'>')){
echo json_encode($status['succeed']);
die;
}
else{
echo json_encode($status['fail']);
}
?>
Других решений пока нет …