Сообщение от xlebosolniy
|
Проверяется несколько пунктов, которые должны быть обязательные, если содержат ошибки или не заполнены- возврат.
|
Где это? if (!empty($name)) {$msg =$msg."\nИмя: ".$name;} - это что-ли проверка? Пробел переданный полем уже не является пустым значением. Если так проверять данные извне, я могу вам гарантировать, что превращу ваш домен в рассадник спама.
$post = array_map('trim', $_POST);
Только после этого можно проверить пусто ли значение $post['name']. А в поле адреса не должно быть лишнего. И формирование самой отправки никуда не годится. Например тему сообщения нужно кодировать, на нее не распространяется заголовок указывающий кодировку. Читайте, в интернете об этом столько написано, что читать и не перечитать.
У вас форма отдается клиенту на другой странице, и страница form.php в случае ошибки должна возвращать форму. Из этого следует, что форму удобно иметь в виде подключаемого шаблона и с учетом заполнения. То есть, в html шаблоне формы должны быть php вставки:
<input type="text" class="form-control" name="name" value="<?=htmlspecialchars($name)?>" placeholder="Контактное лицо" required>
и т.д. При подавлении вывода предупреждений (а на севере это должно быть так), на первой странице при подключении шаблона формы php-переменные будут раны null. А на странице form.php они определены и при ошибках, и подключении формы для возврата пользователю, поля форы будут заполнены данными введенными пользователем.
Логика кода:
if(@mail($sendto, $subject, $msg, $headers)) {
echo "<script>alert('Заявка успешно отправлена. Ожидайте звонка в указанное Вами время.'); location.href='index.html';</script>";
} else {
echo "<center><img src='images/ne-otpravleno.png'></center>";
}
вообще не понятна, вернее тут полное отсутствие логики. Никаких собачек для подавления функции mail не нужно, эта функция не отправляет почту, она только отдает сформированное отправление sendmail, и возвращает только true/false, в зависимости от того принял ли sendmail почту для отправки или нет.
Весь этот код заменим на:
header('location:/index.php#openModal');
А так как это последнее по логике в коде, значит exit можно не выполнять. В данном случае переход решает и проблему повторной отправки формы по F5.
Если у вас нет перенаправления, то структура кода, логика ее, у вас неверна.