[Префиксы с сайта на сервер] - Запрещаем мат

Wellasgood`

Участник
Сообщения
60
Реакции
25
Баллы
18
Здравствуйте, уважаемые форумчане!

Хотел бы поделиться с Вами моим куском кода, который поможет Вам запретить в поле ввода префикса с сайта, те слова, которые вы хотите запретить (что бы не было сохранения, если введено это слово).

И так, начнем:

Идем в файл по пути: Ваш сайт/ajax/actions_a.php

В тексте настроек префикса:

PHP:
if (isset($_POST['edit_user_prefix'])) {
    $user_prefix = check($_POST['user_prefix'],null);

    if (mb_strlen($user_prefix, 'UTF-8') > 16) {
        exit('<span class="glyphicon glyphicon-remove"></span> Префикс должен состоять не более чем из 16 символов.');
    }
  
    $STH = $pdo->query("SELECT id,login FROM users WHERE prefix='$user_prefix' LIMIT 1"); $STH->setFetchMode(PDO::FETCH_OBJ);
    $row = $STH->fetch();
    if (!empty($row->id) and !empty($row->prefix)) {
        exit('<p class="text-danger">Введеный Вами префикс занят пользователем <a href="../profile?id='.$row->id.'" target="_blank">'.$row->login.'</a></p>');
    }

    $STH = $pdo->prepare("UPDATE users SET prefix=:user_prefix WHERE id='$_SESSION[id]' LIMIT 1");
    $STH->execute(array(':user_prefix' => $user_prefix));

    write_log("Префикс изменен на ".$user_prefix." | actions_a.php");
    exit('<span class="glyphicon glyphicon-ok"></span> Ваш префикс изменен!');
}

Нужно добавить такие строки (суть: сначала мы создаем массив со словами, а потом перебираем и сопоставляем из введенного пользователем с нашими закодированными словами):

PHP:
 $slova = array('Мудак', 'Жопа', 'Все педики', 'Гнида', 'Вонючки', 'Все козлы', 'дибилойды', 'уроды все', 'чмошники', 'мудаки', 'дибилы', 'Бог сервера', 'Бог', 'Глава сервера', 'Создатель', 'создатель', 'Зам. Создателя', 'Уебки', 'Суки', 'Сука', 'Блядины', 'Блядь', 'хуй', 'Хуй', 'Пизда', 'пизда');
    foreach($slova as $item)
    {
        if (preg_match("/$item/",$user_prefix))
        exit('<span class="glyphicon glyphicon-remove"></span><font color="red">Внимание! В префиксе присутствуют запрещенные слова, исправьте и попробуйте снова!</font>');
    }

Готовый код:

PHP:
if (isset($_POST['edit_user_prefix'])) {
    $user_prefix = check($_POST['user_prefix'],null);

    if (mb_strlen($user_prefix, 'UTF-8') > 16) {
        exit('<span class="glyphicon glyphicon-remove"></span> Префикс должен состоять не более чем из 16 символов.');
    }
  
 $slova = array('Мудак', 'Жопа', 'Все педики', 'Гнида', 'Вонючки', 'Все козлы', 'дибилойды', 'уроды все', 'чмошники', 'мудаки', 'дибилы', 'Бог сервера', 'Бог', 'Глава сервера', 'Создатель', 'создатель', 'Зам. Создателя', 'Уебки', 'Суки', 'Сука', 'Блядины', 'Блядь', 'хуй', 'Хуй', 'Пизда', 'пизда');
    foreach($slova as $item)
    {
        if (preg_match("/$item/",$user_prefix))
        exit('<span class="glyphicon glyphicon-remove"></span><font color="red">Внимание! В префиксе присутствуют запрещенные слова, исправьте и попробуйте снова!</font>');
    }

    $STH = $pdo->query("SELECT id,login FROM users WHERE prefix='$user_prefix' LIMIT 1"); $STH->setFetchMode(PDO::FETCH_OBJ);
    $row = $STH->fetch();
    if (!empty($row->id) and !empty($row->prefix)) {
        exit('<p class="text-danger">Введеный Вами префикс занят пользователем <a href="../profile?id='.$row->id.'" target="_blank">'.$row->login.'</a></p>');
    }

    $STH = $pdo->prepare("UPDATE users SET prefix=:user_prefix WHERE id='$_SESSION[id]' LIMIT 1");
    $STH->execute(array(':user_prefix' => $user_prefix));

    write_log("Префикс изменен на ".$user_prefix." | actions_a.php");
    exit('<span class="glyphicon glyphicon-ok"></span> Ваш префикс изменен!');
}


* - где '' (между ' ' наше слово)
* - добавить можно сколько хотите слов
* - с кодом можно манипулировать как хотите

Результат:

20190117_143543.png 20190117_143619.png

Спасибо за внимание! Надеюсь это кому-то будет полезно!

From Wellasgood`
 
Внимание! Система еще голая! Возможно будут доработки.

Пока что такие предостережения!

1. Если собираетесь добавить матное слово или другое слова, думаете какие потом будут последствия!
Пример: Пользователь впишет в поле префикс слова - потреБЛЯТЬ или слово - саБЛЯ (а у нас в массиве установлено слова БЛЯ, БЛЯТЬ), тогда они тоже не смогут писать эти слова.

2. Этот способ не гарантирует защиты 100%.

3. Составляемая база (слова в массивах) - Ваша собственная инициатива (слова могут быть разными, придуманными Вами)

4. Если плохо разбираетесь в кодинге, лучше не трогайте сам код (кроме слов в массивах - их можно добавить сколько угодно)! Оставьте все как у меня в статье! Поддержка осуществляется посредством личных сообщений или в этой теме!
 
Почему бы не сделать регулярку независимую от регистра? (i)
 
Хорошое предложение, можно сделать много улучшений разных) Я пока весь в делах.. Даже незнаю когда выйдет мое обновление. Можете сами делать как Вам нужно))
 
Большое важное обновление системы Анти-мат!

Кто использовал прежнюю версию системы, обновиться обязательно!

Установка:

Делаем все также по инструкции, то что выше (1-ым постом). Просто вставляем готовый код, что приведен в файле который нужно скачать (взять из него код и скопировать (по инструкции).

Инфо доработок и улучшений:

/*
*
  • Начало
  • Анти-Мат система (Ver 1.0.4) From Wellasgood` для движка 'Game CMS'
  • Ver 1.0.0 = создан массив и поиск слов из массива
  • Ver 1.0.1 = созданы многие массивы на разные слова, поиск слов из этих массивов, если встретилось нужное слово то выход.
  • Ver 1.0.2 = добавлены массивы с матными и извращенными матными словами, более 4000+ слов.
  • Ver 1.0.3 = массивы были разделены по буквам алфавита для удобства поиска (и быстроты), т.е каждый массив, это маты начинающися с определенной буквы. Далее если слово существует, выход из функции (остановка).
  • Ver 1.0.4 = доработка функций перебора (поиска слов).
*
*/


Будут вопросы, пишите здесь, иначе в лс, иначе в вк > тык, иначе в телеграм группы GameCMS.
Руки добрались)) :)
 

Вложения

  • Private code.txt
    117.8 KB · Просмотры: 70
Последнее редактирование:
Если у Вас ограниченная Ram память на своем хостинге сайта, то лучше уменьшить кол-во массивов. (Данная система будет жрать много Ram памяти при частом использовании)
 
Здравствуйте! Ну как пример, если у Вас очень много префиксов покупают, и будут пробовать вводить свои префиксы много раз, и если эта система будет задействована много раз и часто это делать, то возрастет нагрузка значительно на Ram память, так вот если Ram лимитированная, то будут проблемы.

Скажу так, я у себя использую. Полет нормальный.
 
Можно тестировать, потом делать выводы, но лучше изначально узнать какая у Вас Ram, лимитированная или нет.
 
Если кому интересно, как из 4000 тысяч слов сделаны массивы по буквам алфавита, то смотрите видео.

 
  • Like
Реакции: zeka
Внимание! В связи с обновлением защиты Game CMS, у всех вроде как был обновлен файл action_a.php

В связи с этим, тем у кого была установлена эта анти-мат система, необходимо ее заново установить.

А также!!! >>> Если у Вас было такое: "<span class="glyphicon glyphicon-remove" то заменяем часть выражения: "glyphicon glyphicon-" на "m-icon icon-" и так везде...
 
Назад
Сверху