Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Антиспам (запрет англоязычных сообщений) (https://javascript.ru/forum/misc/84871-antispam-zapret-angloyazychnykh-soobshhenijj.html)

рони 12.03.2023 09:15

Цитата:

Сообщение от Ubivectel
И тут никак?

вы же сами написали что тут всё нормально фильтрует, меняйте или добавляйте строку 17. тут sesion то есть изначально.

рони 12.03.2023 09:20

Ubivectel,
очередная полная хрень, но будет работать...
document.querySelectorAll(".KIDE_msg_top").forEach(msg => {
        for (let {
            textContent
        } of msg.querySelectorAll("span"))
            if (msg.innerHTML.includes('cd112ab6890ac4fc25030e2bbcbd7e08') && /\w{11,}/g.test(textContent.replace(/\s+/g, ''))) {
                msg.remove();
                break;
            }
    })

рони 12.03.2023 09:22

Ubivectel,
или так если только по сессии
document.querySelectorAll(".KIDE_msg_top").forEach(msg => {
        for (let {
            textContent
        } of msg.querySelectorAll("span"))
            if (msg.innerHTML.includes('cd112ab6890ac4fc25030e2bbcbd7e08')) {
                msg.remove();
                break;
            }
    })

Ubivectel 12.03.2023 09:22

Я уже понял, что так или иначе окончательное решение в PHP, за костыли спасибо! :thanks:

Ubivectel 13.03.2023 08:18

Вопрос как всегда по синтаксису, писать условие для каждой сессии если их надо несколько это дико

if (sesion == ('98fe218f4ea8e120f80cb76756d6fd6f')) return;


Как их правильно перечислить?

рони 13.03.2023 08:56

Ubivectel,

let arrSesion = ['123a','fff3', 'ddd5'];
   if (arrSesion.includes(sesion)) return;

Ubivectel 13.03.2023 10:21

Опять чувствую себя тупым, а тут что делаю не так?

document.querySelectorAll(".KIDE_msg_top").forEach(msg => {
        for (let {
            textContent
        } of msg.querySelectorAll("span"))
        let arrSesions = ['65953456c6bfbbe88159538019814581', '064fdb4c9c8f5a367e2282c700c0640c'];
            if (msg.innerHTML.includes(arrSesions)) {
                msg.remove();
                break;
            }
})

рони 13.03.2023 10:27

Ubivectel,
let arrSesions = ['65953456c6bfbbe88159538019814581', '064fdb4c9c8f5a367e2282c700c0640c'];
   document.querySelectorAll(".KIDE_msg_top").forEach(msg => {
   if(arrSesions.some(sesions => msg.innerHTML.includes(sesions))) msg.remove();
  })

Ubivectel 26.03.2023 13:19

В процессе решения диких задач, мы по сути сделали теневую блокировку, когда пользователь видит свои сообщения, а все остальные нет. Единственное, как-то бы еще добавить, что бы это условие:

let arrSesions = ['65953456c6bfbbe88159538019814581', '064fdb4c9c8f5a367e2282c700c0640c'];
   document.querySelectorAll(".KIDE_msg_top").forEach(msg => {
   if(arrSesions.some(sesions => msg.innerHTML.includes(sesions))) msg.remove();
  })


Не срабатывало, если arrSessions содержит this.sesions

Короче надо, что бы при обновлении страницы, свои сообщения видел только автор :)

рони 26.03.2023 14:10

Ubivectel,
строка 1 смотри пункт #37 остальное элементарно
var sesion = '123';
        let arrSesions = ['65953456c6bfbbe88159538019814581', '064fdb4c9c8f5a367e2282c700c0640c'];
        document.querySelectorAll(".KIDE_msg_top").forEach(msg => {

            if (arrSesions.some(sesions => sesions != sesion && msg.innerHTML.includes(sesions))) msg.remove();
        })

Ubivectel 26.03.2023 15:41

Нашел, как можно вывести сессию: echo $r->sesion;
но пока не понимаю как это запихнуть в переменную

Ubivectel 26.03.2023 16:02

Вот оно! let test = "<?php echo $r->sesion; ?>"; :dance:

Ubivectel 26.03.2023 16:38

Сделал так:

let sesion = "<?php echo $r->sesion; ?>";
let arrSesions = [
    '2f02de1647f05dfdbb7b8c0ee714a516',
    '1dc86f8de96b0944817d62b83be76b78',
    '13916bff412b17fad03aa702884edf50',
    '741068e4c9a802d13c2556f511c58fdd',
    '916466dd0c26c1ed575b96e59a5c44c2',
    'd0a4d2096a7ab0d1b76110dcfa07f03a',
    'abec9a88413a304c6d2f12b5548f67c1'
];
document.querySelectorAll(".KIDE_msg_top").forEach(msg => {
    if (arrSesions.some(sesions => sesions != sesion && msg.innerHTML.includes(sesions))) msg.remove();
})
    console.log('Моя сессия:' + sesion);


Однако при обновлении страницы сообщения остаются для всех :( не понимаю пока, что не так

Ubivectel 26.03.2023 17:04

Победил :dance: проблема была в том, что вписывал скрипт в файл php и там он видимо не находил msg. Перенес в файл JS и все заработало, рони спасибо!

рони 26.03.2023 17:05

Ubivectel,
телепатии не хватает, чтобы понять, что ты хочешь сделать, особенно причём тут сессии.

рони 26.03.2023 17:06

Цитата:

Сообщение от Ubivectel
Победил

ура!!! но что это, одному тебе известно)))


Часовой пояс GMT +3, время: 00:10.