Инструменты пользователя

Инструменты сайта


software:development:demo:cms:ucms:appendix:appendix_blacklist

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
software:development:demo:cms:ucms:appendix:appendix_blacklist [2026/02/12 21:36] – создано VladPolskiysoftware:development:demo:cms:ucms:appendix:appendix_blacklist [2026/02/14 23:26] (текущий) – [spam_list.txt] VladPolskiy
Строка 3: Строка 3:
 **[[software:development:demo:cms:ucms:ucms_table_of_contents | Краткое содержание]]** **[[software:development:demo:cms:ucms:ucms_table_of_contents | Краткое содержание]]**
 </note> </note>
 +
 +
 +===== Спам  =====
 +Для блокировки спама в PHP по списку запрещенных слов (spam_list.txt), используйте функцию file() для чтения файла и stripos() для проверки наличия запрещенных фраз в данных формы. Скрипт проверяет входящие $_POST данные и прекращает выполнение при обнаружении спама.
 +Реализация блокировки:
 +Создайте файл spam_list.txt с запрещенными словами/фразами, по одной на строку.
 +====== spam_list.txt ======
 +
 +<code txt spam_list.txt>
 +dead
 +fuck
 +</code>
 +
 +=== block_spam.php ====
 +<code php block_spam.php>
 +<?php
 +// Файл со списком спама (каждое слово/фраза с новой строки)
 +$spam_file = 'spam_list.txt';
 +
 +if ($_SERVER["REQUEST_METHOD"] == "POST") {
 +    // Читаем спам-лист в массив
 +    if (file_exists($spam_file)) {
 +        $spam_words = file($spam_file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
 +    } else {
 +        $spam_words = []; // Если файла нет, считаем, что спам-листа нет
 +    }
 +
 +    // Собираем данные формы (например, комментарий)
 +    $comment = $_POST['username'] ?? '';
 +
 +    // Проверяем данные на наличие спама
 +    foreach ($spam_words as $word) {
 +        if (!empty($word) && stripos($comment, $word) !== false) {
 +            // Если нашли спам, блокируем отправку
 +            die("Сообщение заблокировано спам-фильтром.");
 +        }
 +    }
 +
 +    // Если спама нет, обрабатываем форму дальше
 +    echo "Сообщение принято!";
 +}
 +?>
 +</code>
 +
 +=== block_spam_test.php ====
 +<code php block_spam_test.php>
 +<form action="block_spam.php" method="POST">
 +    <input type="text" name="username">
 +    <input type="submit" value="ok">
 +</form>
 +
 +<?php
 +if ($_SERVER["REQUEST_METHOD"] == "POST") {
 +    // Получаем и выводим данные
 +    $name = $_POST['username'];
 +    echo "Введенное имя: " . htmlspecialchars($name);
 +}
 +?>
 +</code>
 +<note shadow>{{:software:development:demo:cms:ucms:appendix:block_spam_test_8.png?|}}</note>
 +<note shadow>{{:software:development:demo:cms:ucms:appendix:block_spam_test_9.png?|}}</note>
 +Ввведем слово из спам листа
 +<note shadow>{{:software:development:demo:cms:ucms:appendix:block_spam_test_10.png?|}}</note>
 +<note shadow>{{:software:development:demo:cms:ucms:appendix:block_spam_test_11.png?|}}</note>
 ===== User-Agent (Проверка Ботов) ===== ===== User-Agent (Проверка Ботов) =====
 Блокировка ботов в PHP осуществляется путем проверки строки User-Agent в запросе $ _SERVER['HTTP_USER_AGENT'] и прерывания выполнения скрипта, если обнаружен вредоносный робот. Для защиты рекомендуется использовать массив известных ботов, проверять их в начале файла (например, через хук) и использовать die() или exit() для закрытия доступа.  Блокировка ботов в PHP осуществляется путем проверки строки User-Agent в запросе $ _SERVER['HTTP_USER_AGENT'] и прерывания выполнения скрипта, если обнаружен вредоносный робот. Для защиты рекомендуется использовать массив известных ботов, проверять их в начале файла (например, через хук) и использовать die() или exit() для закрытия доступа. 
Строка 8: Строка 72:
 Добавьте этот код в начале ваших PHP-скриптов: Добавьте этот код в начале ваших PHP-скриптов:
  
-===== block_bot.php ======+=== block_bot.php ====
 <code php block_bot.php> <code php block_bot.php>
 <?php <?php
Строка 39: Строка 103:
 </code> </code>
  
-====== botlist.txt ======+==== botlist.txt ====
  
 <code txt botlist.txt> <code txt botlist.txt>
Строка 49: Строка 113:
  
 ===== Блокировка по IP ===== ===== Блокировка по IP =====
-===== block.php ====== +==== block.php ==== 
-<code php block.php>+<code php block_ip.php>
 <?php <?php
 // Путь к файлу черного списка // Путь к файлу черного списка
 $blacklistFile = 'blacklist.txt'; $blacklistFile = 'blacklist.txt';
 +
 +
 +// Зададим функцию получения значения IP адреса
 +function get_ip_list()
 +{
 + $list = array();
 + if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
 + $ip = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
 + $list = array_merge($list, $ip);
 + } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
 + $ip = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
 + $list = array_merge($list, $ip);
 + } elseif (!empty($_SERVER['REMOTE_ADDR'])) {
 + $list[] = $_SERVER['REMOTE_ADDR'];
 + }
 + $list = array_unique($list);
 + return implode(',', $list);
 +}
  
 // Получаем IP посетителя // Получаем IP посетителя
-$visitorIp = $_SERVER['REMOTE_ADDR'];+$visitorIp = get_ip_list(); 
 +// Выводим IP посетителя 
 +echo $visitorIp; 
 +echo "<br/>";
  
 // Читаем файл в массив, удаляя переносы строк // Читаем файл в массив, удаляя переносы строк
 if (file_exists($blacklistFile)) { if (file_exists($blacklistFile)) {
     $blacklist = file($blacklistFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);     $blacklist = file($blacklistFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
 +
     // Проверяем, есть ли IP в списке     // Проверяем, есть ли IP в списке
-    if (in_array($visitorIp, $blacklist)) {+ // Фильтрация по диапазону 
 + // 185.219.157.127 // Отдельный IP 
 + // 185.219.*.127  // Диапазон (все IP, начинающиеся с этого) 
 + foreach ($blacklist as $blocked_ip) { 
 +    // Преобразуем маску с * в регулярное выражение 
 +    $pattern = '/^' . str_replace(['.', '*'], ['\.', '.*'], $blocked_ip) . '$/'; 
 +     
 +    if (preg_match($pattern, $visitorIp)) {
         header('HTTP/1.0 403 Forbidden');         header('HTTP/1.0 403 Forbidden');
         die('Доступ запрещен.');         die('Доступ запрещен.');
     }     }
 + }
 } }
- 
 // ... остальной код сайта // ... остальной код сайта
 echo "Добро пожаловать!"; echo "Добро пожаловать!";
 ?> ?>
 </code> </code>
-====== blacklist.txt ======+==== blacklist.txt ====
  
 <code txt blacklist.txt> <code txt blacklist.txt>
Строка 79: Строка 171:
 10.0.0.5 10.0.0.5
 172.16.0.100 172.16.0.100
 +185.219.157.127
 </code> </code>
 Проверяем браузер Проверяем браузер
 <note shadow>{{:software:development:demo:cms:ucms:appendix:blacklist_txt_8.png?|переход страниц}}</note> <note shadow>{{:software:development:demo:cms:ucms:appendix:blacklist_txt_8.png?|переход страниц}}</note>
 +
 +<code txt blacklist.txt>
 +192.168.1.1
 +10.0.0.5
 +172.16.0.100
 +185.219.157.128
 +</code>
 +Проверяем браузер
 +<note shadow>{{:software:development:demo:cms:ucms:appendix:blacklist_txt_9.png?|переход страниц}}</note>
 +
 +<code txt blacklist.txt>
 +192.168.1.1
 +10.0.0.5
 +172.16.0.100
 +185.219.157.*
 +</code>
 +Проверяем браузер
 +<note shadow>{{:software:development:demo:cms:ucms:appendix:blacklist_txt_10.png?|переход страниц}}</note>
 ===== Дополнения и Файлы ===== ===== Дополнения и Файлы =====
   * {{ :software:development:demo:cms:ucms:appendix:blacklist.txt |}}   * {{ :software:development:demo:cms:ucms:appendix:blacklist.txt |}}
   * {{ :software:development:demo:cms:ucms:appendix:ipsum.txt |}}   * {{ :software:development:demo:cms:ucms:appendix:ipsum.txt |}}
   * {{ :software:development:demo:cms:ucms:appendix:botlist.txt |}}   * {{ :software:development:demo:cms:ucms:appendix:botlist.txt |}}
 +  * {{ :software:development:demo:cms:ucms:appendix:spammers.txt |}}
 ~~DISCUSSION:off~~ ~~DISCUSSION:off~~
software/development/demo/cms/ucms/appendix/appendix_blacklist.1770921412.txt.gz · Последнее изменение: VladPolskiy

Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: Public Domain
Public Domain Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki