Есть простая форма обратной связи.
<form action="./mail.php" method="POST">
<input type="text" name="name" required="" placeholder="Введите имя">
<input type="tel" name="phone" required="" placeholder="Введите телефон">
<button type="submit" class="button inverse" href="#orderForm">Хочу узнать</button>
<input type="hidden" name="utm_source" value="">
<input type="hidden" name="utm_medium" value="">
<input type="hidden" name="utm_campaign" value="">
<input type="hidden" name="utm_term" value="">
<input type="hidden" name="utm_placement" value="">
<input type="hidden" name="utm_creative" value="">
<input type="hidden" name="utm_content" value="">
</form>
Содержимое mail.php
<?php
$to1 = 'mail@mail.com';
$subject = 'Заявка c сайтa '.$_SERVER['SERVER_NAME'];
$message = 'На сайт '.$_SERVER['SERVER_NAME'].' поступила новая заявка.<br>';
foreach($_POST as $key=>$var){
if(!empty($var)) $message .= $key .' : '. $var .'<br>';
}
$message .= '<br>Письмо отправлено автоматически и не требует ответа';
$headers = "Content-type: text/html; charset=utf-8 \r\n";
$headers .= "From: ROBOT <robot@".$_SERVER['SERVER_NAME'].">\r\n";
mail($to1, $subject, $message, $headers);
mail($to2, $subject, $message, $headers);
?>
Код js
$('form').submit(function() {
$.ajax({ type: "POST", url: "../mail.php", data: $(this).serialize() }).done(function() {
$(this).find("input").val("");
$("form").trigger("reset");
});
$.arcticmodal('close');
event.preventDefault();
});
return false;
С форм обычно приходит вся нужная информация. Но временами, по непонятной причине, приходят странные пустые письма, содержащие только "На сайт поступила новая заявка. Письмо отправлено автоматически и не требует ответа" и больше ничего. В чем может быть проблема?
Обработчик должен быть примерно такой:
<?php
$post = (!empty($_POST)) ? true : false;
if($post) {
$name = $_POST['name'];
$email = $_POST['email'];
$mytel = $_POST['phone'];
$message = $_POST['message'];
$captcha_code = $_POST['captcha_code'];
$error = '';
if(!$name) {$error .= 'Укажите свое имя. ';}
if(!$email) {$error .= 'Укажите электронную почту. ';}
if($captcha_code != 12) {$error .= 'Код проверки введен некорректно, либо пуст. ';}
if(!$message || strlen($message) < 1) {$error .= 'Введите сообщение. ';}
if(!$error) {
$address = "xxx@mail.ru"; //почта на которую будут приходить письма
$sub = "Тема сообщения здесь";
$mes = "Имя: ".$name."\n\nE-mail: ".$email."\n\nТелефон: ".$mytel."\n\nСообщение: ".$message."\n\n";
$send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
if($send) {echo 'OK';}
}
else {echo '<div class="err">'.$error.'</div>';}
}
?>
Проблема в обработчике - не проверяете заполненность полей. Вот и шлют пустую форму. Даже если используете проверку на клиенте, то никогда нельзя этой проверке доверять - всегда проверять еще раз на сервере.
Виртуальный выделенный сервер (VDS) становится отличным выбором
При использовании FileCopy, выдало отказано в доступеЗапускал VS от администратора, не помогло
Необходимо создать консольную программу для реализации афинного шифра (рекуррентный не нужен) Русский алфавит, точка, запитая, пробел