Не работает форма обратной связи

272
24 октября 2017, 03:14

Здравствуйте! Есть лендинг пока на тестовом домене 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; 
	}); 
});

Answer 1

У вас у формы нет 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';
READ ALSO
Ошибка php Uncaught Error

Ошибка php Uncaught Error

Использую функцию xmlrpc_encode()Вот код:

246
Слияние подстрок в PHP

Слияние подстрок в PHP

Имеется массив с ключами идущими по порядкуМне необходимо создать новый массив в каждой строке которого будет по несколько значений предыдущего...

218
Пагинатор на классах

Пагинатор на классах

В общем нужно добавить пагинаторЕсть вывод таблицы из базы

253
Анализ баз данных с помощью PHP [требует правки]

Анализ баз данных с помощью PHP [требует правки]

Создаю административную панель сайтаХочу сделать модуль который анализирует базу таблицу из базы

174