Ошибка при отправке формы с сайта

При использовании сайта на cms WordPress совместно с плагином Contact Form 7, случается так, что у некоторых посетителей не отправляются веб-формы, созданные плагином. Текст ошибки выглядит так: «При отправке сообщения произошла ошибка. Пожалуйста, попробуйте ещё раз позже.»

Решение ошибки Contact Form 7: "При отправке сообщения произошла ошибка."
Обычно такая ошибка возникает когда указан неверный исходящий адрес, либо плагин или скрипт вмешивается в работу плагина веб-форм. Первое, что необходимо проверить для решения проблемы, это адрес исходящий почты в настройках проблемной формы:исходящая почта в wpcf7

Адрес должен соответствовать домену сайта. Например, если у вас домен website.ru, то в поле «От кого» должен стоять ящик этого домена, например mail@website.ru. При этом исходящий адрес может даже не существовать, поэтому можете указать абсолютно любую почту, главное — чтобы она соответствовала домену сайта.

Если способ не помог, то проверьте настроен ли сервис Recaptcha. Для этого зайдите в админке по пути: Contact Form 7> Интеграция.

Решение ошибки Contact Form 7: "При отправке сообщения произошла ошибка."

Если в блоке «ReCaptcha» написано «reCAPTCHA активна на этом сайте.», то нужно отключить привязку ключей. Для этого нажмите на кнопку «Настройка интеграции», а затем «Удаление ключей».

Решение ошибки Contact Form 7: "При отправке сообщения произошла ошибка."

ReCaptcha — это сервис Google, который на основе своих алгоритмов определяет человек вы или бот. Иногда сервис ошибается и не дает отправлять формы на сайте. После удаления ключей ваш сайт не буден защищен от спама, но вы можете установить плагин «ReCaptcha v2 for Contact Form 7», где не будет проблемы с определением пользователей.

Что делать если способы не помогли?

В таком случае последовательность действий такая:

  1. Нужно отключить все плагины, кроме Contact Form 7, затем проверить работу форм. Если проблема решилась, то методом исключения включаете каждый плагин по отдельности и находите конфликтный.
  2. Если не помогло, то открываем файлы шаблона header.php и footer.php и удаляем подключение сторонних скриптов. Проверяем работу форм. Также, если формы заработали, применяете метод исключения.

Вышеописанные способы в 99% случаев должны помочь решить проблему. Если у вас осталась ошибка, то прошу связаться с нами любым доступным способом, указанным ниже, либо на странице контакты

Ошибки в формах

приема данных

Ошибки в формах могут появляться из-за неверно настроенной интеграции со сторонним сервисом. В этой статье описаны наиболее частые ошибки и пути их решения.

После подключения сервиса приема данных в настройках сайта отметьте его галочкой в меню «Контент» блока с формой и обязательно переопубликуйте страницу с формой.

Заявки не приходят в сервис приема данных

Если на опубликованной странице в форме не отображается ошибка, а заявки все равно не приходят, то нужно проверить логи сервиса приема данных.

Перейдите в личный кабинет Тильды → откройте раздел «Заявки» → посмотрите наличие ошибок в «Журнале ошибок».

Перейдите в раздел «Заявки»

Также открыть список последних ошибок можно при помощи бокового виджета. Для этого нажмите на иконку восклицательного знака.

Ниже мы выделили популярные ошибки сервисов приема данных, платежных систем и сервисов доставки, описали причины возникновения и способы их устранения.

Примите во внимание, что мы не осуществляем поддержку по вопросам связанным с работой вашего кода.

Ошибки при заполнении формы на сайте

Такие ошибки отображаются при попытке отправки данных в форме и видны всем пользователям.

Ошибка «Отправка данных невозможна»

Необходимо перейти в «Настройки сайта» → «Формы» → в самом низу «Общие настройки форм» → нажать «Настроить» → «Сохранить» → переопубликовать страницу с формой, перейти на опубликованную страницу, обновить её 2-3 раза и попробовать оставить заявку ещё раз.

Ошибка «[456] {«needcaptcha»:1}. Please, try again later.»

Ошибка появляется для определенного пользователя, при попытке заполнить форму несколько раз подряд за короткий период времени, без прохождения теста «Я не робот». Обычно в таком случае пользователь блокируется по IP на сутки. Необходимо проверить отправку формы в режиме «Инкогнито» или через VPN.

Если в вашем проекте возникла иная ошибка при получении данных с форм, обратитесь в службу поддержки в личном кабинете. Специалисты помогут разобраться.

maks_7

4 / 4 / 3

Регистрация: 14.10.2014

Сообщений: 321

1

Не работает отправка формы

09.05.2016, 14:09. Показов 3799. Ответов 8

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

С праздником, уважаемые форумчане!
У меня есть файл отправки формы на php. Я его раньше уже использовал и он прекрасно работал. Но сейчас что-то пошло не так.

Вот форма:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<table style="margin:0 auto">
           <tr><td>
                 <form method="post" name="letter" action="handler.php">        
                    <div class="input-group "  style="margin-right:30px;">
                       <span class="input-group-addon text-form">Your name<span style="color:red"> *</span></span>       
                       <input name="name" type="text" class="form-control yourname" >             
                 </div>
               </td>
               <td> 
                  <div class="input-group ">
                       <span class="input-group-addon text-form">Your Email<span style="color:red"> *</span></span>      
                       <input name="email" type="email" class="form-control yourmail">            
                    </div>
                 </form>
              </td> 
           </tr>
           <tr>
              <td colspan="2">
                  <div style="margin-top:20px; width:100%;" class="input-group">
                       <span class="input-group-addon  textarea">Your Message<span style="color:red"> *</span></span>                     
                       <textarea name="text" rows="10" class="form-control message"></textarea>                                                    
                  </div>
              </td>
           </tr>
           <tr>
              <td colspan="2">
                <input type="submit" value="SEND MESSAGE" class="send"> 
              </td>
           </tr>
        </table>

И вот файл отправки формы:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
if( isset($_POST['name'],$_POST['email'],$_POST['text']) ) {
 $name = trim($_POST['name']);
 $email = trim($_POST['email']);
 $text = trim($_POST['text']);
  if(empty($name) || empty($email) || empty($text)) { //если что то не ввели
   echo 'Вы заполнили не все поля!';
  }
  else { //все поля заполнены, отправляем
   $mailto = 'k33@ya.ru';
   $subject = 'Тема письма';
//формируем текст сообщения
   $message  = 'Сообщение от пользователя <b>'.$name.'</b>';
   $message .= 'E-mail пользователя: <a href="mailto:' . $email . '">' . $email . '</a><br />';
   $message .= 'Текст сообщения:<br />' . $text;
//формируем заголовки (кодировку только, остальное сами добавите по желанию)
   $headers = 'Content-type: text/html; charset=utf-8';
//отправляем письмо
   $mail = mail($mailto, $subject, $message, $headers);
//проверяем отправку
    if(TRUE === $mail) echo 'Ваше сообщение успешно отправлено!';
    else echo 'Произошла ошибка при отправке сообщения.';
//проверку можно записать короче при помощи тернарного оператора, вот так:
//  echo (TRUE === $mail) ? 'Ваше сообщение успешно отправлено!' : 'Произошла ошибка при отправке сообщения.' ;
//тогда нужно будет раскомментировать строчку выше и закомментировать строчки выше с проверкой
  }
}
?>

Может это таблица мешает или то,что сайт на бутстрапе? Спасибо зарание.



0



Пифагор

2169 / 1652 / 840

Регистрация: 10.01.2015

Сообщений: 5,184

09.05.2016, 14:15

2

HTML5
1
<input type="submit" value="SEND MESSAGE" class="send">

помимо всего должно быть имя, которое потом передается при условии нажатия.

HTML5
1
<input type="submit" name="submit" value="SEND MESSAGE" class="send">

Добавлено через 1 минуту

PHP
1
2
3
if(isset($_POST['submit'])){
    //то, что выполняется
}



1



Kerry_Jr

Эксперт PHP

3105 / 2590 / 1219

Регистрация: 14.05.2014

Сообщений: 7,236

Записей в блоге: 1

09.05.2016, 14:47

3

Цитата
Сообщение от Пифагор
Посмотреть сообщение

помимо всего должно быть имя, которое потом передается при условии нажатия.

PHP
1
2
3
if(isset($_POST['submit'])){
    //то, что выполняется
}

Не понимаю, для чего проверять, нажата кнопка или нет.



0



2169 / 1652 / 840

Регистрация: 10.01.2015

Сообщений: 5,184

09.05.2016, 14:51

4

Цитата
Сообщение от Kerry_Jr
Посмотреть сообщение

Не понимаю, для чего проверять, нажата кнопка или нет.

А если кнопок несколько?



0



4 / 4 / 3

Регистрация: 14.10.2014

Сообщений: 321

09.05.2016, 14:57

 [ТС]

5

Спасибо, помогло! Теперь возникла следующая проблема. Когда должна открываться страница, где сообщается, что письмо успешно отправлено, вместо этого какие-то кракозябры и на почту тоже кракозябры приходят. Страница index.html сохранена в utf-8 и в php файле есть строчка
$headers = ‘Content-type: text/html; charset=utf-8’;
Как сделать нормальный текст?



0



maruo

133 / 133 / 48

Регистрация: 26.04.2013

Сообщений: 1,356

09.05.2016, 15:03

6

Пифагор, Так можно проверить на параметры которые есть , и должны приниматься

Добавлено через 1 минуту
maks_7,
Открываете через notepad++ файл преобразовываете в utf-8 без BOM
Прописываете в .htaccess строчку

HTML5
1
AddDefaultCharset utf-8

Если информация выбирается из Базы данных, то в соединении указываете кодировку.

PHP
1
mysqli_set_charset($link, "utf8");



1



Эксперт PHP

3105 / 2590 / 1219

Регистрация: 14.05.2014

Сообщений: 7,236

Записей в блоге: 1

09.05.2016, 15:03

7

Цитата
Сообщение от Пифагор
Посмотреть сообщение

А если кнопок несколько?

Тогда этот вопрос не возник бы



0



maruo

133 / 133 / 48

Регистрация: 26.04.2013

Сообщений: 1,356

09.05.2016, 15:11

8

maks_7, Насчет кодировки на почте, нужно отправить заголовок

PHP
1
$mailheaders = "Content-type: text/plain; charset="utf-8"rn";



1



4 / 4 / 3

Регистрация: 14.10.2014

Сообщений: 321

09.05.2016, 15:17

 [ТС]

9

Спасибо, все отлично работает!



0



Дело в том, что вы не вызываете свой PHP-скрипт.
Да, он у вас прописан в атрибуте action формы, но ни одна из кнопок на самом деле не отправляет форму. Каждая из ваших кнопок выполняет перенаправление, которое вы задаёте в JS-функции, а собственно отправки формы не происходит, ибо

    event.preventDefault();

То есть буквально: «Предупредить выполнение события по умолчанию».

У вас есть выбор: заменить кнопки, например, на радиокнопки, а по отправке формы сначала писать в БД, а потом обычным PHP’шным header("location: ...") перенаправить туда, куда вам нужно (так бы делал я); или же оставить всё как есть, но в JS-функции ещё AJAX’ом дёрнуть ваш PHP-скрипт (считаю это решение переусложнённым).
Если что-то непонятно, спрашивайте в комментариях, обновлю ответ.

UPDATE: Примерное решение на радиокнопках

Код примерный, сразу говорю (бэкенд особо не проверял — накидал примерно, ибо я бы делал на PDO). Там есть мои комментарии, они в квадратных скобках и с пометкой A. P.. Да, и ещё я несколько улучшил код, если что-то непонятно, снова пишите в комментарии.

HTML

<form action="post.php" method="POST" class="form">
                    <div class="input-wrap">
                        <label for="num" class="phone-on-form" >Номер<br> телефона</label>
                        <!-- [Тип для телефонов — tel, а не phone — A. P.] -->
                        <!-- [У вас в PHP переменная называется num, поэтому здесь name тоже должен быть num. Ну или наоборот, но поскольку тип tel, пусть будет num — A. P.] -->
                        <!-- [Ещё можно добавить шаблон валидации телефона, погуглите атрибут pattern — A. P.] -->
                                                <input class="input" type="tel" placeholder="+380 Номер телефона" id="num" name="num">
                        
                    </div>
                
                <!-- [Немножко наведём красоту по доступности для слепых — A. P.] -->
                <p id="messenger-type" class="call-to-action">Шаг №1: Выберите удобный вам мессенджер</p>
                
                <div class="buttons" role="group" aria-labelledby="messenger-type">
                <label>
                        <input type="radio" name="messenger" value="Facebook">
                            <img src="img/lgt-icon-facebook.svg" class="icon"></img>
                            <p>Messenger</p>
                        </label>
                        <label>
                        <input type="radio" name="messenger" value="Telegram">
                            <img src="img/lgt-icon-telegram.svg" class="icon"></img>
                            <p>Telegram</p>
                        </label>
                        <label>
                        <input type="radio" name="messenger" value="Viber">
                        <img src="img/lgt-icon-viber.svg" class="icon"></img>
                        <p>Viber</p>
                    </label>
                </div>
                    <p><button type="submit" id="go" name="go">Отправить</button></p>
                </form>

PHP

<?php
// [Я не очень понимаю, зачем эта проверка — A. P.]
if (isset($_POST['num'])){
    // [Переменные переопределять не будем, у вас там путаница — A. P.]
    // Параметры для подключения
    $db_host = "localhost"; 
    $db_user = "login"; // Логин БД
    $db_password = "pass"; // Пароль БД
    $db_base = 'name'; // Имя БД
    $db_table = "tablename"; // Имя Таблицы БД
    
    // Подключение к базе данных
    $mysqli = new mysqli($db_host,$db_user,$db_password,$db_base);
    // [Честно, я бы советовал вам применять PDO: во-первых, это красиво ©, а во-вторых, можно было бы поймать исключение, а не делать вот эти вещи — A. P.]
    // Если есть ошибка соединения, выводим её и убиваем подключение
  if ($mysqli->connect_error) {
      die('Ошибка : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
  }
    // [Давайте подготовим запрос, чтобы к вам никто не пролез с SQL-инъекцией — A. P.]
    $result = $mysqli->prepare(sprintf("INSERT INTO %s (num) VALUES (?)"), $db_table);
    $result->bind_param("s", $_POST['num']);
    $result->execute();

    // [Поскольку мы хотим сделать редирект, уберём echo. По-хорошему, такие ошибки надо логировать в файл — A. P.]
    // [А вот теперь возьмём значения радиокнопок из формы и определим, куда перенаправлять — A. P.]
    $redirect = [
        'Facebook' => 'https://messenger.com',
        'Telegram' => 'https://t.me',
        'Viber' => 'https://some.url.to.viber'  // [Понятия не имею, какой у него URL — A. P.]
    ];

    header(sprintf('location: %s', $redirect[$_POST['messenger']]));
}

Не отправляется форма с сайта?

Не работает отправка формы. Открывается страница php, но на почту ничего не приходит. Версия php на хостинге 5.4

HTML

<form action="/submit.php" method="POST"> 
                            
				           <div class="col-md-4 col-sm-4 col-xs-12">
                                <input type="name" id="name" name="name" required>
						       <label for="name" class="name-label">Ваше имя:</label>
                            </div>
                               
                            <div class="col-md-4 col-sm-4 col-xs-12">    
                                <input type="tel" id="tel" name="tel" required> 
							   <label for="tel" class="tel-label">Телефон:</label>
                            </div>

                            <div class="col-md-4 col-sm-4 col-xs-12">     
                            <input type="submit" value="Отправить">
                            </div>
                         </form>

PHP

<?php
$recepient = "valentin.***@gmail.com";
$sitename = "Парк 1000 Узлов";
$name = trim($_POST["name"]);
$tel = trim($_POST["tel"]);

$subject = "Новая заявка с сайта "$sitename"";
$message = "Имя: $name nТелефон: $tel";

mail($recepient, $subject, $message, "Content-type: text/plain; charset="utf-8"n From: $recepient");


  • Вопрос задан

    более трёх лет назад

  • 227 просмотров

Пригласить эксперта

Возможно такое, что у хостера есть правило: можно отправлять письма только от отправителя, который зарегистрирован в веб-почте хостинга. Т.е. сперва надо зарегистрировать пользователя почты. Например: no-reply@ваш_домен.com. Потом в заголовках отправляемой письма указать эти данные.

$to = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: NO-REPLY@ваш_домен.com' . "rn" .
    'Reply-To: NO-REPLY@ваш_домен.com' . "rn";

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

Абстрагируйтесь пока от формы
Напишите что-то вроде:

mail(«Ваш@email.ru», «test», «test»);

Если на почту придет, то проблема в коде и хостер не при делах. Если не придет — пишите хостеру или лучше для начала почитайте FAQ на его сайте, наверняка там этот случай описан.

Ну и папку «Спам» у себя проверьте


  • Показать ещё
    Загружается…

14 июн. 2023, в 03:49

3000 руб./за проект

14 июн. 2023, в 03:45

4000 руб./за проект

14 июн. 2023, в 01:02

5000 руб./за проект

Минуточку внимания

Понравилась статья? Поделить с друзьями:
  • Ошибка при отправке файла в утм java lang illegalargumentexception
  • Ошибка при отправке сообщения яндекс
  • Ошибка при отправке сообщения через с
  • Ошибка при отправке сообщения установленное соединение
  • Ошибка при отправке сообщения сеансу rdp