За последние 24 часа нас посетил 22461 программист и 1152 робота. Сейчас ищут 613 программистов ...

Php скрипт для блокировки доступа по ip к сайту

Тема в разделе "Сделайте за меня", создана пользователем kinoveb, 25 авг 2021.

  1. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Попробуйте файл из вложения
     

    Вложения:

    • ip.zip
      Размер файла:
      692 байт
      Просмотров:
      4
    kinoveb нравится это.
  2. kinoveb

    kinoveb Новичок

    С нами с:
    25 авг 2021
    Сообщения:
    18
    Симпатии:
    0
    разместил. так же
     
  3. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Сложно сказать чем вызвано такое поведение этого скрипта у вас на сайте.
    Попробуйте обратиться в техподдержку хостинга.
     
    kinoveb нравится это.
  4. kinoveb

    kinoveb Новичок

    С нами с:
    25 авг 2021
    Сообщения:
    18
    Симпатии:
    0
    Спасибо.
    Перепробовал все режимы Режим работы PHP и php версии.
     
  5. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Если хостинг бесплатный, то они почти всегда что-то рекламное пытаются вставить.
    Возможно это как-то связано.
     
  6. kinoveb

    kinoveb Новичок

    С нами с:
    25 авг 2021
    Сообщения:
    18
    Симпатии:
    0
    Нет зомро, у меня и панель своя вечная. Я сам там все делаю, там все по шаблону, уже давно сам там делаю
    upload_2021-8-25_19-26-56.png
     
  7. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    То есть, вы этот код вставляете в некий шаблон?
     
  8. kinoveb

    kinoveb Новичок

    С нами с:
    25 авг 2021
    Сообщения:
    18
    Симпатии:
    0
    Я завтра попробую, (ночь не спал, скрипты искал) вместо Blocked! шаблон прикрутить, и любую статистику запихаю туда, запихаю, хоть что то увижу
    --- Добавлено ---
    Нет. Я имел ввиду, версии php, и Режим работы PHP , Memcache все это там на сервере по шаблону делается. код я куда надо вставляю, хоть в php не понимаю, тут не возможно напутать в index.php
     
  9. pantificos

    pantificos Новичок

    С нами с:
    10 ноя 2022
    Сообщения:
    1
    Симпатии:
    0
    Такой вопрос. Как можно сделать блокировку IP по маске?
    Например, есть IP c маской вида: 94.206.209.204/30

    Вставляю этот IP с мaской 94.206.209.204/30 в black_list.txt
    И чтобы была блокировка по всей маске.

    Это сработает?
     
  10. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Нет. Извлекайте из IP его необходимые части. Например с помощью explode()
    И на их основе формируйте диапазон для сравнения. Ну, или генерируйте range(), для поиска с помощью in_array()
     
  11. musliy

    musliy Гость

    С нами с:
    12 ноя 2022
    Сообщения:
    2
    Симпатии:
    0
    Можете пример показать?

    Писался код, но он не работает почему-то на VPS и хостинге.

    PHP:
    1. <?php
    2. // Функция проверки вхождения IP-адреса в подсеть:
    3. $ip = $_SERVER['REMOTE_ADDR'];
    4. function ip_in_net($ip, $net, $mask) {
    5. // Преобразование IP в беззнаковое десятичное целое число:
    6. $ip = (int)sprintf("%u", ip2long($ip));
    7. $mask = (int)sprintf("%u", ip2long($mask));
    8. $net = (int)sprintf("%u", ip2long($net));
    9. if (($ip & $mask) == $net) {
    10. return 1;
    11. }
    12. else {
    13. return 0;
    14. }
    15. }
    16. // Поскольку подсети записаны в формате 127.0.0.0/8, то понадобится функция перевода CIDR в обычную маску: 127.0.0.0/255.0.0.0:
    17. function cidr_to_mask($mask) {
    18. return long2ip(pow(2, 32)-pow(2, (32-$mask)));
    19. }
    20. // Загружаем файл с базой подсетей, не забываем указать правильный путь к файлу:
    21. $file = $_SERVER['DOCUMENT_ROOT'].'ipbase.txt';
    22. // Если файл существует и доступен для чтения:
    23. if (is_readable($file)) {
    24. // Считываем файл в массив:
    25. $nets = @file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    26. // Проходим массив циклом:
    27. for($i = 0, $size = sizeof($nets); $i < $size; $i++) {
    28. // Если строка существует:
    29. if ($nets[$i]) {
    30. // Разбиваем строку на массив, в качестве значений используются адрес и маска подсети:
    31. $line = explode('/', $nets[$i]);
    32. $mask = cidr_to_mask($line[1]); // Переводим CIDR в обычную маску
    33. $net = $line[0];
    34. // Проверяем вхождение IP-адреса в подсеть:
    35. if (ip_in_net($ip, $net, $mask)) {
    36. // Если IP-адрес входит в подсеть, выводим результат:
    37. echo 'Адрес '.$ip.' входит в подсеть '.$net.'/'.$mask;
    38. // Или задаем значение переменной $ip для использования за пределами данного цикла (в правиле ниже):
    39. $ip = 'yes';
    40. break; // Прерываем цикл
    41. }
    42. }
    43. }
    44. }
    45. ?>
     
  12. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    Судя по той истерике в ЛС, что вы закатили, вам уже и не надо.