Здравствуйте! Есть лендинг пока на тестовом домене http://elenadva.beget.tech/ На данный момент там не работает форма обратной связи. Сообщения не отправляются (при нажатии кнопки ничего не происходит). Помогите, пожалуйста. На Опен Сервер работает, на хостинге - нет. Код формы в index.php:
<form role="form" id="contact" action="php/mail.php" method="post">
<div class="row">
<div class="col-md-4">
<input type="text" class="form-control" id="name" name="name" placeholder="Ваши ФИО или название организации">
<input type="email" class="form-control" id="email" name="email" placeholder="Email">
<input type="text" class="form-control" id="subject" name="subject" placeholder="Курс">
</div>
<div class="col-md-8">
<textarea class="form-control" id="message" rows="25" cols="10"
placeholder="Текст сообщения"></textarea>
<input class="btn btn-default submit-btn form_submit" type="submit" name="submit" value="Записаться на курс"></input>
</div>
</div>
</form>
Код mail.php:
<?php
$post = (!empty($_POST)) ? true : false;
if($post) {
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$error = '';
if(!$name) {$error .= 'Укажите свое имя. ';}
if(!$email) {$error .= 'Укажите электронную почту. ';}
if(!$subject) {$error .= 'Укажите интересующий Вас курс. ';}
if(!$message || strlen($message) < 1) {$error .= 'Введите сообщение. ';}
if(!$error) {
$address = "elena.darek@gmail.com";
$mes = "Имя: ".$name."\n\nТема: " .$subject."\n\nСообщение: ".$message."\n\n";
$send = mail ($address,$subject,$mes,"Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
if($send) {echo 'OK';}
}
else {echo '<div class="err">'.$error.'</div>';}
}
?>
Код скрипта js:
jQuery(document).ready(function($) {
$("#contact").submit(function() {
var str = $(this).serialize();
$.ajax({
type: "POST",
url: "php/mail.php",
data: str,
success: function(msg) {
if(msg == 'OK') {
result = '<div class="ok">Ваше сообщение отправлено</div>';
$("#fields").hide();
}
else {result = msg;}
$('#note').html(result);
}
});
return false;
});
});
У вас у формы нет id, на который у вас js висит. Замените первую строчку формы на это
<form role="form" id="contact" action="php/mail.php" method="post">
А также замените кнопку на это (смотри ниже). У вас она не submit. А js висит именно на отправку.
<input type="submit" class="btn btn-default submit-btn form_submit value="Записаться на курс">
Также к каждому input
и textarea
нужно добавить атрибут name
. Именно с таким именем (которое указано в атрибуте name
) данные придут на сервер в массиве $_POST
. Например:
<input type="email" name='email' class="form-control" id="email" placeholder="Email">
Значит в массиве $_POST
будет запись с ключом name
и значением, которое ввели в этот input
.
код php
$errors=array(
'name' => 'Укажите свое имя.',
'email' => 'Укажите электронную почту.',
'subject' => 'Укажите интересующий Вас курс.',
'message' => 'Введите сообщение.',
);
foreach ($errors as $variable => $error_text) {
if(!isset($_POST[$variable]) or empty($_POST[$variable])) exit('<div class="err">'.$error_text.'</div>');
}
extract($_POST);
$address = "elena.darek@gmail.com";
$mes = "Имя: ".$name."\n\nТема: " .$subject."\n\nСообщение: ".$message."\n\n";
$send = mail($address, $subject, $mes, "Content-type:text/plain; charset = UTF-8\r\nFrom:$email");
if($send) echo 'OK';
Виртуальный выделенный сервер (VDS) становится отличным выбором
Имеется массив с ключами идущими по порядкуМне необходимо создать новый массив в каждой строке которого будет по несколько значений предыдущего...
Создаю административную панель сайтаХочу сделать модуль который анализирует базу таблицу из базы