Рамис Хамидуллин
С нами с 28 июня 2017; Место в рейтинге пользователей: #612- Заметки 14
- Комментарии 8
6 часов назад
Постараюсь в свободное время это сделать, спасибо за предложение
[FetchIt] - Полноценная замена AjaxForm без зависимостей 59
7 часов назад
Самое лучшее решение в данной ситуации — это сделать отдельный файл для работы с этим API, например:
/assets/components/mycomponent/api.phpну или про...
[JSON] Как вывести страницу в формате JSON? 2
Вчера в 21:54
Не отображаются добавленные поля в редактировании пользователя.
Добавил одно поле в «общую информацию», для другого создал вкладку, в ней ещё вкладку...
ExtraFields. Дополнительные поля для ресурса (modResource) и пользователя (modUserProfile). 31
Вчера в 11:28
$_modx->resource['tv-name']Или в чанках где-то внутри pdoResources
$_pls['tv-name']но лучше избегать дефис в названиях TV. Дефис н...
Получение tv поля ресурса 4
17 апреля 2024, 19:12
С расположение пакетов это одна из проблем которую на мой взгляд нормально не решишь, всегда на измене что то то можешь затереть
По этому и придумал ...
Эксперимент с Modx Extra + Docker 12
17 апреля 2024, 09:41
Исходники открою ага. В общественный репозиторий пока не переношу.
[modRetailCRM] - теперь бесплатный для всех. 2
16 апреля 2024, 22:00
Координаты можно в админпанели у ресурса в ТВ полях определять…
Для этого советую поставить компонент YandexCoordsTv
Так будет намного проще.
Как сделать отложенную загрузку для скриптов яндекс карт и рекапчи 3? 7
16 апреля 2024, 21:10
Спасибо огромное! Все как надо!
[miniShop2] Как таблицу товаров, сформированную через msGetOrder, разбить на отдельные табли... 2
Я борюсь таким образом:
1. Проверяю в сниппете для FormIt с помощи регулярки на наличие ссылки типа site.com И email типа name@mail.com в поле текстового сообщения + в каждом поле такую проверку делаю (Имя, Телефон, Название фирмы, все поля чекаю). Если обнаружена ссылка, то возвращаю false и сообщение, что «Ссылки или электронные адреса в данном поле не разрешены. Вы можете приложить Word, Excel, PDF или текстовый файл с подробным описанием, ссылками и email.».
2. Использую сниппет csrfhelper:
А в вызов FormIt добавляю хук csrfhelper_formit.
3. Разумеется, добавляю простейшую проверку на пустоту скрытое поле URL (можно назвать поле любым человекоподобным словом) 4. Добавляю таймер на страницу, который не разрешает отправлять форму, если ты менее 15 секунд на странице (обычно спам-боты отправляют спам моментально после загрузки страницы, менее чем за 1-5 секунд) и показываю пользователю сообщение об ошибке «Слишком быстро нажата кнопка Отправить. Подождите, пожалуйста, 15 секунд и отправьте еще раз.»
В форме Fenom-тэг с текущим временем в формате UNIX. Сравниваем его в антиспам-сниппете.
5. На всякий случай вырезаю все html-тэги из всех полей :stripTags
6. В доработке хук, который чекает прилагаемый файл через форму: только pdf, word, excel, txt, zip, png, jpg; не больше 25 мегабайт (вроде как стандартное ограничение всеми почтовиками). Если проверка не пройдена, то показываем вежливое сообщение, что мы принимаем только такие файлы и не больше 25 мб.
7. Не забываем про проверку на обязательность заполнения полей со стороны клиента с помощью тэга required. А также проставляем все необходимы типы данных в инпутах: type=«email», type=«number» или же type=«text» во всех полях!
Мое мнение — самое главное вернуть очень понятный человеку и вежливый ответ, что здесь ссылки не разрешены в целях борьбы со спамом, Вы можете приложить файл со всеми ссылками и адресами.
Сам сниппет antiSpam:
В самой форме плейсхолдеры для вывода человекопонятных ошибок:
До этого у меня была всего-лишь одна проверка regExp на наличие ссылки и email в поле Сообщения (message). Спама почти не было, но стал приходить спам типа Buy our viagra on usa-pharma.shop, пропускались такие ссылки. Более длинная регулярка уже иногда блочила любой текст, если юзер пишет сообщение и после точки сразу пишет слово нового предложения.
Добавил проверку на 15 секундное ожидание (человеку просто не реально раньше 15й секунды заполнить все поля и отправить форму). Можно поставить 5 секунд.
После этого стали приходить сообщение только от человеков, никакого спама.
Не отловленные ошибки надо бы логгировать (у меня был этот кусок кода для логгирования не отправленных форм через FormIt, но не могу найти, он в старых хуках был).
Ну и можно по IP блочить вдобавок, как выше уже предложено.
Я не очень силен в PHP, как смог так и написал, поэтому большая просьба помочь хорошо доработать данный сниппет/хук и поделиться им здесь.
1. Можно вывести ваш компонент в простом формате? типа — город (картинка состояния погоды) +-градусы
2. И как там с блокировками импорта данных? в примере из тикета о простом выводе погоды импорт блокирован яндексом
создать плагин на pdoToolsOnFenomInit, в нем добавить модификатор detector
и теперь в любом месте можно делать так
1. Настраиваем MIGx
1.1. Создаем таблицы в БД и объекты
— Ставим MIGx, как написано в документации к нему!
Я назвал этот «полукомпонент» xqa, все имена/префиксы делал с этим названием…
— Открываем MIGx в админке, и на первой вкладке создаем package xqa
— берем эту xml
и на вкладке xml schema ждем save, сохраняя ее.
— теперь создаем таблицы в БД на вкладке create Tables и создаем классы на вкладке parse Schema.
Таким образом мы получаем таблицу в БД и xpdo классы для работы с этой таблицей.
Структура моей таблицы:
1.2 Создаем MIGx настройку.
Идем в MIGx — вкладка MIGx (вторая вкладка с настройками)
Делаем новую xqa и по ней правой кнопкой — Экспорт/Импорт, вставляем следующий код:
Сохраняем и ради интереса жмем редактировать, смотрим какие поля и колонки у нас есть.
2. Делаем стандартную форму на Formit, в которой должны быть поля author, author_email, question. Как вы ее реализуете — ваши заботы.
Что важно для нас, у Formit указываем хук xQaAdd:
&hooks=`email,xQaAdd`
Хук email я тоже использую, что бы пришло администратору сайта уведомление «Добавлен новый вопрос...».
Код хука примерно такой, т.е. мы просто создаем новый объект xQa (вопрос):
3. Делаем TV поле с типом ввода migxdb, указываем Конфигурацию xqa (мы ее выше создавали), назначаем TV нужному шаблону.
У ресурса должна появится таблица:
4. Уведомление пользователя об ответе:
Создаем плагин notifyVisitors на событие OnDocFormSave:
Что делает плагин: при сохранении ресурса получаем все xQa, у которых стоит галочка «Оповестить автора об ответе», далее, например, отправляем письмо (я НЕ ПРИВОЖУ этот код, напишите его сами), ставим notify в 0.