Пустые отправки с сайта AjaxFormit + Formit
С сайта нет нет приходят заявки, вот в таком виде:
Я не пойму каким образом это происходит?
К примеру, если бы просто нажали отправить, то эти формы были бы пустые, а тут!?
Стоит связка AjaxFormit + Formit, есть поля обязательные для заполнение и защита от ботов виде скрытого поля, если заполнили, то форму не отправлять!
В общем я скрываюсь в догадках, что это такое, кто ни будь сталкивался?
Я не пойму каким образом это происходит?
К примеру, если бы просто нажали отправить, то эти формы были бы пустые, а тут!?
Стоит связка AjaxFormit + Formit, есть поля обязательные для заполнение и защита от ботов виде скрытого поля, если заполнили, то форму не отправлять!
В общем я скрываюсь в догадках, что это такое, кто ни будь сталкивался?
Комментарии: 9
Шаблон формы в студию!
[[!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>
У вас валидация проверка на спам происходит на фронте и если отпрвито постом, то проходим мимо проверки!)
Напишите хук для проверки скрытого поля и можно еще контролировато нажатие кнопки присвоив ей имя. Написанный хук указать перед хуком email.
Напишите хук для проверки скрытого поля и можно еще контролировато нажатие кнопки присвоив ей имя. Написанный хук указать перед хуком email.
Можно более конкретно, желательно с примером, пока не совсем понял про что речь!
Если на страницу, но которой вызывается ajaxForm отправить данные методом POST, то ваша валидация на стороне JS будет игнорирована.
Для того что бы такое не приходило нужно проверку осуществлять на стороне PHP. Для этого у Formit есть хуки.
Офф. док: https://docs.modx.com/extras/revo/formit/formit.hooks
По примеру в докуентации создаете хук для проверки заполненности скрытого поля и добавляете свой хук в вызов сниппета.
Промер хука:
Для того что бы такое не приходило нужно проверку осуществлять на стороне 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»
Не совсем уловил смысл проверки на нажатие кнопки, для чего, что дает!?
Создайте php файл и средствами curl отправьте POST данные на эту страницу! Думаю что все станет ясно.
А как будет выглядеть условие на кнопку?
if(!isset($btn_name)) {return false;}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.