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

12
A
На сайте с 27.08.2017
Offline
3
4524

Здравствуйте, форумчане. Нужна помощь, не могу разобраться, почему не работает форма отправки сообщений с сайта.

http://pkub.ru/potolki/#contact

В коде ничего не менялось, кроме адреса email. Не работает из коробки

В php я не разобрался.

Вот html код формы

<form id="main-contact-form" name="contact-form" method="post" action="">

<div class="row wow fadeInUp" data-wow-duration="1000ms" data-wow-delay="300ms">
<div class="col-sm-6">
<div class="form-group">
<input type="text" name="name" class="form-control" placeholder="Ваше имя" required="required">
</div>
</div>
<div class="col-sm-6">
<div class="form-group">
<input type="email" name="email" class="form-control" placeholder="Email адрес" required="required">
</div>
</div>
</div>
<div class="form-group">
<input type="text" name="subject" class="form-control" placeholder="Тема" required="required">
</div>
<div class="form-group">
<textarea name="message" id="message" class="form-control" rows="4" placeholder="Ваше сообщение" required="required"></textarea>
</div>
<div class="form-group">
<button type="submit" class="btn-submit">Отправить</button>
</div>
</form>

php код файла sendemail.php

<?php

$name = @trim(stripslashes($_POST['name']));
$from = @trim(stripslashes($_POST['email']));
$subject = @trim(stripslashes($_POST['subject']));
$message = @trim(stripslashes($_POST['message']));
$to = 'fernaton@ya.ru';//replace with your email

$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: {$name} <{$from}>";
$headers[] = "Reply-To: <{$from}>";
$headers[] = "Subject: {$subject}";
$headers[] = "X-Mailer: PHP/".phpversion();

mail($to, $subject, $message, $headers);

die;

Код из main.js

	// Contact form

var form = $('#main-contact-form');
form.submit(function(event){
event.preventDefault();
var form_status = $('<div class="form_status"></div>');
$.ajax({
url: $(this).attr('action'),
beforeSend: function(){
form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn() );
}
}).done(function(data){
form_status.html('<p class="text-success">Thank you for contact us. As early as possible we will contact you</p>').delay(3000).fadeOut();
});
});
M
На сайте с 04.12.2013
Offline
223
#1

Не надо пихать пользовательское мыло, незакодированное имя и т.п. во From и не только.

Эти кривые заглушки «из коробки» лучше сразу грохать без зазрения совести и всяких сомнений. Дешевле выйдет сразу обратиться к специалисту, чем пытаться использовать ТАКОЕ.

Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
SeVlad
На сайте с 03.11.2008
Offline
1609
#2

Как минимум во FROM должно быть мыло того домена сайта, с которого отправляется форма. Некоторые хостеры даже требуют завести это мыло на их постовом сервере.

Адрес отправителя (адрес для ответа) должен быть в REPLY-TO.

А вообще эта форма дырява до ужаса.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
S
На сайте с 30.09.2016
Offline
469
#3
adadez:
не могу разобраться, почему не работает форма отправки сообщений с сайта

У этого может быть 100500 причин. Неправильное подключение jquery, ошибки javascript, кривая работа маршрутизатора движка сайта, неправильная настройка почтового сервера. Надо пошагово во всём этом разбираться.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
CP
На сайте с 12.08.2009
Offline
101
#4

Вообще скрипт ajax отправки у вас не отрабатывает из ошибок в файле main.js. При клике форма отправляет данные стандартными средствами на action который вы указали в форме.

Да и action у вас action="zakaz.php" а код показываете из файла sendemail.php.

Профессиональный frontend: JS, html,css, Single-Page App (/ru/forum/964386)
Z0
На сайте с 03.09.2009
Offline
763
#5

<form id="main-contact-form" name="contact-form" method="post" action="">

	// Contact form
var form = $('#main-contact-form');
form.submit(function(event){
event.preventDefault();
var form_status = $('<div class="form_status"></div>');
$.ajax({
url: $(this).attr('action'),
beforeSend: function(){
form.prepend( form_status.html('<p><i class="fa fa-spinner fa-spin"></i> Email is sending...</p>').fadeIn() );
}
}).done(function(data){
form_status.html('<p class="text-success">Thank you for contact us. As early as possible we will contact you</p>').delay(3000).fadeOut();
});
});

Если я верно понял, то у вас url: $(this).attr('action') - пустой. Выделил жирным. Нужно туда sendemail.php вставить, если не путаю...

Content-pro:
Вообще скрипт ajax отправки у вас не отрабатывает из ошибок в файле main.js. При клике форма отправляет данные стандартными средствами на action который вы указали в форме.
Да и action у вас action="zakaz.php" а код показываете из файла sendemail.php.

Так акшн пустой...

CP
На сайте с 12.08.2009
Offline
101
#6
ziliboba0213:
Так акшн пустой...

Посмотри через dev tools, у меня показывает что не пуст.

Z0
На сайте с 03.09.2009
Offline
763
#7
Content-pro:
Посмотри через dev tools, у меня показывает что не пуст.

Угу, на сайт не заходил. Видать где-то через js подставляется, но не нашел где :)

S
На сайте с 30.09.2016
Offline
469
#8

Я почему и написал абстрактно про маршрутизатор, там ещё сам движок может редиректить/инклудить внутри себя.

Z0
На сайте с 03.09.2009
Offline
763
#9
Sitealert:
Я почему и написал абстрактно про маршрутизатор, там ещё сам движок может редиректить внутри себя.

Я этого страшного слова не знаю :p

spbs
На сайте с 22.02.2010
Offline
85
#10
miketomlin:
Не надо пихать пользовательское мыло, незакодированное имя и т.п. во From и не только.

А сама функция mail() php безопасна? Почитал кратко про mail injection в формах обратной связи, вроде не мой случай.

mail("nobody@example.com", "the subject", $message,
"From: webmaster@$SERVER_NAME\r\n"
."Reply-To: webmaster@$SERVER_NAME\r\n"
."X-Mailer: PHP/" . phpversion());
mail("joecool@example.com", "My Subject", "Line 1\nLine 2\nLine 3");
Слышь, уважаемый, дай фотик на пять сек, позвонить надо...
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий