Задать вопрос
@retardx

Как заставить работать пхп формы обратной связи?

Добрый день. Я не программист, языков не знаю. ТЗ - чтобы юзер что-то написал в форме и это пришло куда-нибудь, хоть на имейл, хоть в телеграмм, хоть морзянкой.
Имею такую форму обратной связи:
HTML:
<form class="request" method="POST" onsubmit="return false;">
							<div class="nameAndMail">
								<div class="name">
									<h3>Имя*</h3>
									<input id="name" class="checkValidation" name="name" type="text" autocomplete="on"
										minlength="2" maxlength="30" required
										title="Как к Вам обращаться">
								</div>

								<div class="mailOrPhone">
									<h3>Почта</h3>
									<input id="email" class="checkValidation" name="email" type="text" autocomplete="on"
										minlength="5" maxlength="30" required title="Ваша почта">
								</div>
							</div>

							<div class="message">
								<h3>Сообщение*</h3>
								<textarea id="message" class="checkValidation" name="message" minlength="5"
									maxlength="1000" required title="Пару слов о Вашем деле"></textarea>
							</div>

							<input type="submit" id="submit" class="submit" value="Отправить">

							<div class="thank">Спасибо засообщение!</div>
							<div class="offline">Отправить сообщение не получается, т.к. <strong> отсутствует
									интернет-подключение </strong></div>
						</form>
					</div>
				</div>


JS к ней:
function (e, t, o) {
  "use strict";
  Object.defineProperty(t, "__esModule", {
    value: !0
  });
  var n = i(o(0)),
    s = i(o(12));

  function i(e) {
    return e && e.__esModule ? e : {
      default: e
    }
  }
  var l = (0, n.default)(".contacts"),
    a = (0, n.default)("#submit"),
    d = document.querySelectorAll(".checkValidation"),
    r = document.querySelector(".contacts .year"),
    u = {
      state: {
        onContacts: !1
      },
      show: function () {
        l.classList.add("setDeep"), l.classList.add("show"), l.classList.add("animate"), setTimeout(function () {
          l.classList.add("hideUnnecessaryElements")
        }, 510), u.state.onContacts = !0
      },
      hide: function () {
        l.classList.remove("show"), l.classList.remove("animate"), l.classList.remove("hideUnnecessaryElements"), u.state.onContacts = !1
      },
      scale: function () {
        l.classList.add("scale")
      },
      removeScale: function () {
        l.classList.remove("scale")
      },
      sendData: function (e) {
        if (u.checkValidation()) {
          if (console.log("Send data: \n"), setTimeout(function () {
              console.log(i)
            }, 500), 0 == navigator.onLine) return l.classList.add("offline"), void setTimeout(function () {
            l.classList.remove("offline")
          }, 5e3);
          var t = document.getElementById("name").value,
            o = document.getElementById("email").value,
            n = document.getElementById("message").value;
          if ("" != n && "" != o && "" != n) {
            var s = window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP"),
              i = "Name: " + t + "\n\nContacts: " + o + "\n\nMessage: " + n,
              a = "message=" + i;
            s.open("POST", "https://formfor.site/send/ЗДЕСЬ КЛЮЧ, !0), s.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), s.send(a), e.preventDefault(), document.getElementById("name").value = "", document.getElementById("email").value = "", document.getElementById("message").value = "", l.classList.add("success"), setTimeout(function () {
              l.classList.remove("success")
            }, 5e3)
          }
        }
      },
      checkValidation: function () {
        for (var e = 0; e < d.length; e++) return !!d[d.length - 1].checkValidity()
      },
      setListeners: function () {
        a.addEventListener("click", function (e) {
          u.sendData(e)
        })
      },
      resetState: function () {
        (0, s.default)(l, "moveShift", "0px")
      },
      setYear: function () {
        var e = (new Date).getFullYear();
        r.innerHTML = e
      },
      init: function () {
        u.setListeners(), u.setYear()
      }
    };
  t.default = u
},


Пролазил пол дня на форумах - написал mailer php такой
<?php
$to = "1232131232121312x@gmail.com"; // емайл получателя данных из формы
$message = "Имя отправителя: ".$_POST['name']."<br>";//присвоить переменной значение, полученное из формы name=name
$message .= "Его е-mail: ".$_POST['email']."<br>"; //полученное из формы name=email
$message .= "Сообщение: ".$_POST['message']."<br>"; //полученное из формы name=message
$headers  = 'MIME-Version: 1.0' . "\r\n"; // заголовок соответствует формату плюс символ перевода строки
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n"; // указывает на тип посылаемого контента
mail($to, $message, $headers); //отправляет получателю на емайл значения переменных
?>

Он, само собой не работает. Пробовал и в JS его сунуть, и в HTML. После нашел вариант с сайтом formfor.site , но его не пускает с ошибкой Cross-Origin Read Blocking (CORB) blocked cross-origin response ....... Код не мой, понятия не имею как сделать, чтобы заработало
Подозреваю, что вопрос в этой части JS
sendData: function (e) {
        if (u.checkValidation()) {
          if (console.log("Send data: \n"), setTimeout(function () {
              console.log(i)
            }, 500), 0 == navigator.onLine) return l.classList.add("offline"), void setTimeout(function () {
            l.classList.remove("offline")
          }, 5e3);
          var t = document.getElementById("name").value,
            o = document.getElementById("email").value,
            n = document.getElementById("message").value;
          if ("" != n && "" != o && "" != n) {
            var s = window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP"),
              i = "Name: " + t + "\n\nContacts: " + o + "\n\nMessage: " + n,
              a = "message=" + i;
            s.open("POST", "https://formfor.site/send/2qM2LIgD2dtDoqiOMw0oAPqA0lY1Uf", !0), s.setRequestHeader("Content-type", "application/x-www-form-urlencoded"), s.send(a), e.preventDefault(), document.getElementById("name").value = "", document.getElementById("email").value = "", document.getElementById("message").value = "", l.classList.add("success"), setTimeout(function () {
              l.classList.remove("success")
            }, 5e3)
          }
        }
      },
  • Вопрос задан
  • 578 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 3
@freekirill
Пишу под Битрикс
Если не знаешь язык его нужно учить, тут люди помогают советом.
вот мой совет можно использовать конструктор форм обратой связи
https://blogjquery.ru/wp-content/files/services/be... вот пример.
Ответ написан
Комментировать
irishmann
@irishmann
Научись пользоваться дебаггером
Пролазил пол дня на форумах - написал mailer php такой

Где обязательный параметр subject? Header - необязательный параметр. Убрав subject, и задав header, вы сдвинули параметры. То есть вместо subject встал message, вместо message - header, потому и не работает.
<?php
$to      = 'nobody@example.com';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: webmaster@example.com' . "\r\n" .
    'Reply-To: webmaster@example.com' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

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

https://www.php.net/manual/ru/function.mail.php
Ответ написан
Комментировать
webgrill
@webgrill
php developer
Зачем такую запутаную форму. там и в js ошибки и в php. тут лучше самому написать. если есть желание обращайся помогу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы