Я колись ставив гуглу антиспам 3.0, може і норм, але

мені не дуже зайшло.
Теж думав тиждень, що його і куди. Зупинився на трех варіантах відразу всі три і включив
1. Перевірка схованого поля, зробив поле, сховав його в формі, назвав
<input type="email" class="n-message" name="n-message" value="">, в стилях указав display: none; і перевіряю через hooks, "якщо заповнено" даю відповідь 200 ок, але є ньюанс)
<?php

if ($_POST['n-message']) { // трололошка якась))
echo $FetchIt->success('Все гуд чувак');
die();
} else {
return true;
}

2. Перевірка самого повідомлення на знаки які не потрібні

// Визначаємо значення службових змінних за замовчуванням
$success=true;
$haserror=false;
// Масив заборонених фрагментів рядків
// Якщо в якому-небудь полі форми зустрінеться один з нижче перелічених фрагментів, то далі обробляти повідомлення не будемо
$forb=array(
'@',
'http',
'https',
'://',
'www',
'Test',
'test'
);

// Проходимо по масиву заборонених фрагментів
foreach ($forb as $f){
if($haserror==false){ // Якщо ще не зустрівся заборонений фрагмент
$haserror=strpos($value,$f); // Перевіряємо його в значенні поточного перевіряємого поля вводу
}
}

// Якщо була виявлена помилка
if ($haserror!=false) {
$validator->addError($key,'Недопустиме значення!');
$modx->log(xPDO::LOG_LEVEL_ERROR,'Тут живе какашка: IP='.$_SERVER['REMOTE_ADDR'].' Зміст: '.$key.': '.$value);
$success=false;
}
// Повертаємо результат роботи валідатора
return $success;
Ну це на прикладі MODX, але думаю і на EVO можно зробити
3. csrf_token, типу такого (https://laravel.com/docs/11.x/csrf), генерація токена, пишемо в кукі, перевірка токена перед відправленням повідомлення, але думаю що можно і не csrf_token а генерувати случайні літери та цифри,
use Illuminate\Support\Str;

// Генеруємо випадковий рядок довжиною 8 символів
$randomString = Str::random(8);
а то токени веліки))

2 ответов

28 просмотров

є різниця чи на php чи js реалізовувати?

𝓔𝓾𝓰𝓮𝓷𝓮𝓥-J Автор вопроса
Vitaliy Labenskiy
є різниця чи на php чи js реалізовувати?

Робив на пихі, але думаю що різниці немає

Похожие вопросы

Обсуждают сегодня

Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
всем привет. подскажите. сделал политику, он верхнеуровневая. раздал права только на TEST2 (полные). вопрос - можно ли сделать так, чтобы был доступен только TEST2, а остально...
Андрей Сергеев
5
В смысле более затратная? Общая стоимость владения лошадью меньше, чем автомобиля. В среднем.
Sergej R
10
Кстати, раз про скачивание файлов разговор зашел) Сделал бота для себя (транскрибирующего и суммаризирующего встречи) но не ожидал что за 2 месяца 10к пользователей набежит😅...
Andrey Obolenskiy
8
коллеги привет. уже второй день бьемся об заклад с одной ошибкой, может вы сталкивались с таки странным поведением? есть тестовый сервер, на который паблишим релизную версию W...
Magzhan
11
t.me/<username> и tg://user?id=<id> отваливаются по понятным причинам
Denis 🐍|👑 | darling! 🥰
7
Вы когда из вики.... копировали, не обратили внимание на года(ы)? 😉 ==== если до 1917 года в Москве было около 15 000 легковых извозчиков, то к 1920 году их осталось 5 000, а ...
Igor Mitin
4
Как на портал добавить Ганта?
Andrij Moskivets
3
На счёт замены разрабов нейронами: Вряд-ли заказчик сможет нормально пояснить нейросети, чё он хочет. Они то человеку нормально пояснить не могут, не то что нейросети. Так что...
Alex Kom
1
Слушайте, а при создании навигации на Tailor рили нельзя определять активный пункт навигации, как в Static Pages?
Pavel Lautsevich
11
Карта сайта