Пустые отправки с сайта AjaxFormit + Formit

С сайта нет нет приходят заявки, вот в таком виде:



Я не пойму каким образом это происходит?

К примеру, если бы просто нажали отправить, то эти формы были бы пустые, а тут!?

Стоит связка AjaxFormit + Formit, есть поля обязательные для заполнение и защита от ботов виде скрытого поля, если заполнили, то форму не отправлять!

В общем я скрываюсь в догадках, что это такое, кто ни будь сталкивался?
Роман
16 февраля 2018, 09:58
modx.pro
2 076
0

Комментарии: 9

Roman
16 февраля 2018, 13:30
0
Шаблон формы в студию!
    Роман
    16 февраля 2018, 13:40
    0
    [[!AjaxForm?
    	&snippet=`FormIt`
    	&form=`tplForm`
    	&emailTpl=`tplMail`
    	&hooks=`email`
    	&frontend_css=``
    	&frontend_js=``
    	&emailFromName=`Мой сайт`
    	&emailSubject=`Быстрое сообщение с сайта Мой сайт`
    	&emailFrom=`info@mail.ru`
    	&emailTo=`mail@mail.ru`
    	&validate=`name:required,email:required,names:blank`
    	&validationErrorMessage=`В форме содержатся ошибки!`
    	&successMessage=`Ваше сообщение успешно отправлено`
    ]]
    // п.с. js + css прописаны в MinifyX
    
    // Чанк tplForm
    <form action="[[~[[*id]]]]" method="post" class="ajax_form message-back-form">
        <span class="error_name">[[+fi.error.name]]</span>
        <input type="text" id="af_name" name="name" class="feedback-input" placeholder="Ваше имя" value="[[!+fi.name]]" />
        
        <span class="error_name">[[+fi.error.names]]</span>
        <input type="text" id="af_names" name="names" class="feedback-input-website" placeholder="Представьтесь *" value="[[!+fi.names]]" />
        
        <span class="error_name">[[+fi.error.email]]</span>
        <input type="text" id="af_email" name="email"  class="feedback-input" placeholder="Электронная почта" value="[[!+fi.email]]" />
        
        <span class="error_name">[[+fi.error.text]]</span>
        <textarea id="af_text" name="text" class="feedback-textaria" placeholder="Ваше сообщение">[[!+fi.text]]</textarea>
        
        <input type="submit" name="submit-m-b-f" class="call-back-submit" value="Отправить">
        [[+fi.success:is=`1`:then=`
    		<div class="alert alert-success">[[+fi.successMessage]]</div>
    	`]]
    	[[+fi.validation_error:is=`1`:then=`
    		<div class="alert alert-danger">[[+fi.validation_error_message]]</div>
    	`]]
    	<p class="agreement-link">Нажимая на кнопку «Отправить», я даю согласие на <a href="[[~693]]" target="_blank" title="Соглашение об обработке персональных данных">обработку персональных данных</a></p>
    </form>
    
    // Чанк tplMail
    <h3>Быстрое сообщение с сайта</h3>
    <p><b>Форма:</b> Напишите нам сообщение</p>
    <p><b>Страница заявки:</b> [[*tplH1]]</p>
    <br />
    <b>Контакты клиента</b>
    <p><b>Имя:</b> [[+name]]</p>
    <p><b>e-mail:</b> [[+email]]</p>
    <p><b>Сообщение:</b> [[+text]]</p>
      Максим
      16 февраля 2018, 18:22
      0
      У вас валидация проверка на спам происходит на фронте и если отпрвито постом, то проходим мимо проверки!)
      Напишите хук для проверки скрытого поля и можно еще контролировато нажатие кнопки присвоив ей имя. Написанный хук указать перед хуком email.
        Роман
        16 февраля 2018, 18:26
        0
        Можно более конкретно, желательно с примером, пока не совсем понял про что речь!
          Максим
          17 февраля 2018, 08:46
          +1
          Если на страницу, но которой вызывается ajaxForm отправить данные методом POST, то ваша валидация на стороне JS будет игнорирована.
          Для того что бы такое не приходило нужно проверку осуществлять на стороне PHP. Для этого у Formit есть хуки.
          Офф. док: https://docs.modx.com/extras/revo/formit/formit.hooks
          По примеру в докуентации создаете хук для проверки заполненности скрытого поля и добавляете свой хук в вызов сниппета.
          Промер хука:
          <?php
          // Name = testHook
          $hidden = $hook->getValue('hiddenField');
          if(!empty($hidden)){return false;}
          return true;
          В вызове сниппета:
          &hooks=`testHook,email`
          Ну а проверку на нажатие кнопки можно добавить в этот же хук. Она будет доступна в хуке, если у кнопки будет стоять атрибут name, например name=«formSubmit»
            Роман
            17 февраля 2018, 09:21
            0
            Не совсем уловил смысл проверки на нажатие кнопки, для чего, что дает!?
              Максим
              17 февраля 2018, 11:45
              0
              Создайте php файл и средствами curl отправьте POST данные на эту страницу! Думаю что все станет ясно.
                Роман
                17 февраля 2018, 18:55
                0
                А как будет выглядеть условие на кнопку?
                  Максим
                  20 февраля 2018, 11:41
                  +1
                  if(!isset($btn_name)) {return false;}
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    9