К содержанию

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

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



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

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

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

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

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

Roman
Roman Проверенный
16 февраля 2018, 13:30
Шаблон формы в студию!
    Роман
    Роман Старожил
    16 февраля 2018, 13:40
    [[!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
      У вас валидация проверка на спам происходит на фронте и если отпрвито постом, то проходим мимо проверки!)
      Напишите хук для проверки скрытого поля и можно еще контролировато нажатие кнопки присвоив ей имя. Написанный хук указать перед хуком email.
        Роман
        Роман Старожил
        16 февраля 2018, 18:26
        Можно более конкретно, желательно с примером, пока не совсем понял про что речь!
          Максим
          Максим Проверенный
          17 февраля 2018, 08:46
          Если на страницу, но которой вызывается 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
            Не совсем уловил смысл проверки на нажатие кнопки, для чего, что дает!?
              Максим
              Максим Проверенный
              17 февраля 2018, 11:45
              Создайте php файл и средствами curl отправьте POST данные на эту страницу! Думаю что все станет ясно.
                Роман
                Роман Старожил
                17 февраля 2018, 18:55
                А как будет выглядеть условие на кнопку?
                  Максим
                  Максим Проверенный
                  20 февраля 2018, 11:41
                  if(!isset($btn_name)) {return false;}
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    9