Всего 125 986 комментариев

Александр Мельник
28 декабря 2021, 08:59
+2
Очень круто, вы и тем кто вам помогает молодцы.
Я вот просто читая это уже мысленно погружаюсь в свой любимый slim, fastRoute, PHP-DI, middlewares
С наступающим.
Александр Мельник
28 декабря 2021, 08:37
0
А скажите пожалуйста.
стали включать CSS + JS в код страницы
Вы что имеете ввиду? Использование инлайн стилей? Или просто вместо подключения файла со стилями помещаете их в тег style на страницу? В начало страницы или в конец? Или разделяете стили на важные (помещаете в начало страницы) и не важные (в конец)?
Что такое — preload?
Александр Мельник
28 декабря 2021, 08:28
0
спасибо. Я правильно понял — при наведении на кнопку отправить добавляем input в форму с уже заранее прописанным value? А затем в валидаторах formit проверяем что этот input есть и что он не пустой?
Интересная идея.
Shedko Denis
28 декабря 2021, 01:38
0


Еще один сайт как пример
Shedko Denis
28 декабря 2021, 01:23
0
Забейте на логику, понимаю что JS должен быть общим для сайта + включения.

Давно стали включать CSS + JS в код страницы. PageSpeed доволен, показывает хорошие результаты в поле, а не в Lighthouse в мобилке:


+ Автозамена JGP/PNG на wepb
+ минификация html
+ preload
+ lazy loading (по гуглу, а не плагин)

из изначальных 50 запросов осталось около 10 ( www.webpagetest.org/ ) и то 2 на статистику (отложенную по клику, скроллингу и т.д.)
Alexey
27 декабря 2021, 21:37
0
Привет! Ещё вариант: обязательное скрытое поле, которое аппендом добавляется в форму при помощи js по событию ховера на кнопку сабмита.

На больших магазинах не тестил, но на средних работает хорошо. Во всяком случае, до установки этой ловушки спам падал по 20-50 писем в сутки, а после — как отрезало.

Есть минус у этого способа — не отправить форму через ctrl+enter.
Александр Мельник
27 декабря 2021, 19:29
0
Да наверное таких большинство. Признаюсь, идея отсеивать спам просто по принадлежности к стране мне в голову не приходила. Я делал хуки которые не позволяли отправить с одного IP чаще чем раз в секунду, но не особо спасало.
Александр Мельник
27 декабря 2021, 19:25
0
И не сталкиваетесь с тем, что сервисы которые предлагают бесплатное определение страны по IP частенько лагают, часто недоступны?
У меня как то на одном проекте была задача — скрыть сайт от жителей Кореи, но оставить доступным всему миру. Тоже для начала выбрал какой-то бесплатный сервис, но он работал так не стабильно, часто отдавал 500 ошибки, что в итоге купили дорогой пакет.
Николай Савин
27 декабря 2021, 18:55
0
Мне кажется таких большинство. В особенности E-commerce
Александр Мельник
27 декабря 2021, 18:43
0
спасибо. Это несколько неожиданно, но для сайтов которые заточены только под одну или несколько стран — хорошее решение.
Николай Савин
27 декабря 2021, 18:28
+1
Я, например проверяю IP. Обратил внимание, что большинство запросов со спамом лезут из Европы. Потому чаще всего достаточно проверить страну отправителя. И если это не РФ (в моем случае Казахстан был) — то отклонять запрос.
Очень простенький хук на самом деле — и сильно спасает.
Не везде это конечно нужно, но в региональных магазинчиках сойдет
Вот пример кода для хука FormIT
$response = file_get_contents('https://ipwhois.app/json/?lang=ru&ip='.$_SERVER['REMOTE_ADDR']);
$response = json_decode($response, 1);
if(is_array($response)) {
    if($response['country_code'] === 'KZ') {
        return true;
    };
} 

return false;
Сuriosity
27 декабря 2021, 13:40
0
Все ваши новые поля поломаются, если, при внесении записи в это поле, вставить одинарную кавычку (апостроф).
Если следовать вашему примеру, то зайдя в профиль юзера, ​
в поле «Новое поле профиля» написать вместо:
Можно сохранять что угодно…
например
Можно сохранять что угод'но…

Сохраняем, заходим еще раз в профиль этого пользователя и вуаля… нового поля нет (а если было не одно новое поле, то и других бы тоже).

Неприятность находится здесь:
case "OnUserFormPrerender":
        if (!isset($user) || $user->get('id') < 1) {
            return;
        }

        if (!$modx->getCount('modPlugin', array('name' => 'AjaxManager', 'disabled' => false))) {
            $data['new_checkbox'] = $user->new_checkbox ? 'true' : 'false';
            $data['new_field'] = htmlspecialchars($user->Profile->new_field);
Внесите в код правку:
$data['new_field'] = htmlspecialchars($user->Profile->new_field, ENT_QUOTES);
Или, как вариант, впихнуть какую-то регулярку…
Надеюсь, это кому-то поможет.
Игорь Терентьев
27 декабря 2021, 09:46
+1
Привет, нужно открыть сниппет textGenerator и очистить этот параметр:
Иван Бочкарев
27 декабря 2021, 07:02
+2
Это не ошибка, а предупреждение.

Для отключения такого рода предупреждений установите системную настройку log_deprecated в состояние Нет
Фарит
Фарит
26 декабря 2021, 22:41
0
{'Это {скрипт|плагин|сниппет} генерации  {текстов|описаний|заголовков}  {для сайта|для {оптимизации|SEO}}' | textGenerator}
вот так не работает, всегда подтягивает текст из чанка: tpl.textGenerator.input

Как заставить работать? Кеши все чистил.
Николай Савин
24 декабря 2021, 20:07
0
json_encode возможно лишний
Евгений Webinmd
24 декабря 2021, 19:27
+1
попробуйте через программку postman, там потом позволяет сгенерировать код на нужном вам языке. ПОзволит исключить какие-то не явные ошибки (опечатка или лишний параметр)
Vladimir
24 декабря 2021, 18:30
0
Исправил
Для таких ошибок нужно смотреть в журналах по этому адресу /var/log/apache2 В журнале ошибок я обнаружил, что я использовал некоторые переменные в .htaccess, и мой сервер не поддерживал их, по логу нужно было включить 2 модуля.

$ sudo a2enmod headers
$ sudo a2enmod expires
$ systemctl restart apache2
Vladimir
24 декабря 2021, 18:08
0
Есть у кого инструкция как установить modx на VPS не нс нуля, сам пофикшу