вопрос
Доброго времени суток!
Делаю лендинг на dle.
На странице несколько одинаковых форм, но обработчик работает только с первой формой.
Как сделать, чтобы обрабатывались все формы одним обработчиком.
В php не силен, только начинаю изучать. Если кому не сложно поправьте.
Код прилагаю.
html
js
php
Делаю лендинг на dle.
На странице несколько одинаковых форм, но обработчик работает только с первой формой.
Как сделать, чтобы обрабатывались все формы одним обработчиком.
В php не силен, только начинаю изучать. Если кому не сложно поправьте.
Код прилагаю.
html
<form class="form" action="" method="post">
<p class="form-title result">Заполните форму, чтобы назначить первую встречу:</p>
<input type="text" name="name" id="name" class="field" value="Имя">
<input type="text" name="phone" id="phone" class="field" value="Телефон">
<input type="text" name="email" id="email" class="field" value="Email">
<a href="javascript: void(0);" class="button" id="submit" name="submit">Записаться на консультацию</a>
</form>
js
$(document).ready(function() {
$("#submit").on("click", function() {
var name = $("#name").val();
var email = $("#email").val();
var phone = $("#phone").val();
$.ajax({
url: "form.php",
type: "post",
data: {
"name": name,
"email": email,
"phone": phone
},
success: function(data) {
$(".result").html(data);
}
});
});
});
php
header("Content-Type: text/html; charset=utf-8");
if(isset($_SERVER["HTTP_X_REQUESTED_WITH"]) && strtolower($_SERVER["HTTP_X_REQUESTED_WITH"]) === "xmlhttprequest") {
if(!isset($_POST["name"]) || !isset($_POST["email"]) || !isset($_POST["phone"])) {
die();
}
function send_form($message) {
$mail_to = "mail@mail.ru";
$subject = "Письмо c сайта ";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
$headers .= "From: Система уведомлений <no-reply@".$_SERVER['HTTP_HOST'].">\r\n";
mail($mail_to, $subject, $message, $headers);
}
$name = strip_tags($_POST["name"]);
$email = strip_tags($_POST["email"]);
$phone = strip_tags($_POST["phone"]);
if(!preg_match("|^([a-z0-9_.-]{1,20})@([a-z0-9.-]{1,20}).([a-z]{2,4})|is", strtolower($email))) {
echo "E-mail указан некорректно";
die();
}
if($phone == "") {
echo "Телефон указан некорректно";
die();
}
if($name == "") {
echo "Вы забыли представиться";
die();
}
$message = <<<HTML
<b>Имя</b>: {$name}<br>
<b>Телефон</b>: {$phone}<br><br>
<b>E-mail</b>: {$email}
HTML;
send_form($message);
echo "Сообщение успешно отправлено!";
} else {
die();
}
Решение нашел, делюсь, может кому пригодится
Формам даем уникальный идентификатор, в моем случае я решил так id="form{news-id}"
Скрипт отправляющий данные в обработчик на основе id формы, через Ajax без перезагрузки страницы
Ну и сам обработчик
Формам даем уникальный идентификатор, в моем случае я решил так id="form{news-id}"
<form id="form1">
<input type="text" class="name" name="name" placeholder="Ваше имя">
<input type="text" class="phone" name="phone" placeholder="Ваш телефон">
<textarea name="mes" class="mes" placeholder="Текст сообщения"></textarea>
<input type="submit" name="submit" class="btn" value="ОТПРАВИТЬ">
<input type="hidden" name="formData" value="Текст в тему письма">
</form>
<form id="form2">
<input type="text" class="name" name="name" placeholder="Ваше имя">
<input type="text" class="phone" name="phone" placeholder="Ваш телефон">
<textarea name="mes" class="mes" rows="6" placeholder="Текст сообщения"></textarea>
<input type="submit" name="submit" class="btn" value="ОТПРАВИТЬ">
<input type="hidden" name="formData" value="Текст в тему письма">
</form>
<form id="form3">
<input type="text" class="name" name="name" placeholder="Ваше имя">
<input type="text" class="phone" name="phone" placeholder="Ваш телефон">
<textarea name="mes" class="mes" rows="6" placeholder="Текст сообщения"></textarea>
<input type="submit" name="submit" class="btn" value="ОТПРАВИТЬ">
<input type="hidden" name="formData" value="Текст в тему письма">
</form>
Скрипт отправляющий данные в обработчик на основе id формы, через Ajax без перезагрузки страницы
<script type="text/javascript">
$(document).ready(function () {
$('form').submit(function () {
var formID = $(this).attr('id'); // Получение ID формы
var formNm = $('#' + formID);
$.ajax({
type: 'POST',
url: 'mail.php', // Обработчик формы отправки
data: formNm.serialize(),
success: function (data) {
// Вывод текста результата отправки в текущей форме
$(formNm).html(data);
}
});
return false;
});
});
</script>
Ну и сам обработчик
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
if (isset($_POST['mes'])) {$mes = $_POST['mes'];}
if (isset($_POST['formData'])) {$formData = $_POST['formData'];}
$to = "info@site.ru"; /*Укажите ваш адрес электронной почты*/
$headers = "Content-type: text/plain; charset = utf-8";
$subject = "$formData";
$message = "$mes\n\nИмя пославшего: $name \n\nТелефон: $phone \n\n$email";
$send = mail ($to, $subject, $message, $headers);
if ($send == 'true')
{
echo "<center>Спасибо за отправку вашего сообщения!</center>";
}
else
{
echo "<center><b>Ошибка. Сообщение не отправлено!</b></center>";
}
} else {
http_response_code(403);
echo "Попробуйте еще раз";
}
?>