Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 7

Как можно заблокировать нежелательных рефералов

24.06.2016, 11:52. Показов 1723. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, срочно, как можно заблокировать нежелательных рефералов следующего вида:

http://site.ru/?r=реферал_1
http://site.ru/?r=реферал_2
http://site.ru/?r=реферал_3
http://site.ru/?r=реферал_4 и т.д

Т.е. нужно например заблокировать http://site.ru/?r=реферал_2 и http://site.ru/?r=реферал_4 а остальных оставить.
Чтобы в браузере http://site.ru/?r=реферал_2 и http://site.ru/?r=реферал_4 вообще не открывались?
Через .htaccess или код какой-нибудь, Я чайник в этом деле.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.06.2016, 11:52
Ответы с готовыми решениями:

Как можно заблокировать MainMenu?
Как можно заблокировать MainMenu? Меню должно быть видно,а не скрыто как в VISIBLE!!

Как можно заблокировать PictureBox от нажатия?
Слушайте, как можно заблокировать PictureBox от нажатия. Я имею ввиду то, что он у меня стоит обработка нажатия, а если тыкать по нему...

Как можно заблокировать переключение на другое приложение
Как можно заблокировать переключение на другое приложение с помощью alt-tab, alt-esc и т.д.?

12
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
24.06.2016, 14:12
Лучший ответ Сообщение было отмечено Дмитрий-5 как решение

Решение

PHP
1
2
if(in_array($_GET['r'], array('реферал2', 'реферал4')))
    die();
1
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 7
24.06.2016, 15:25  [ТС]
Спасибо ОГРОМНОЕ дружище, помогло )))))))

Добавлено через 57 минут
А если есть большой список таких не нужных рефералов, можно как-то в эту запись array('реферал2', 'реферал4') вставить ссылку на список (.txt или .php) или как-то это по другому делается
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
24.06.2016, 16:48
Дмитрий-5, в каком виде этот список?
если просто текстовый файл и каждый реферал идёт с новой строки, можно так:

PHP
1
2
3
$disallow = file('disallow.txt');
if(in_array($_GET['r'], $disallow))
    die();
Файл должен быть в той же папке, что и скрипт.
0
38 / 38 / 11
Регистрация: 27.09.2014
Сообщений: 491
24.06.2016, 20:14
Желательно всех рефералов приводить, например, к нижнему регистру.
0
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 7
24.06.2016, 21:12  [ТС]
Jodah, создал текстовый файл disallow.txt, туда вставил весь список (около 7 тыс. шт.), каждый с новой строки. Установил этот код:

PHP
1
2
3
$disallow = file('disallow.txt');
if(in_array($_GET['r'], $disallow))
    die();
в ту же папку, что и скрипт и НЕ РАБОТАЕТ. Страницы не блокируются, а вот предложенный до этого код работал как надо, что-то тут не так )))

Добавлено через 6 минут
Vovka, тут как бы не совсем рефералы, это Биткоин адреса, имеют вид 33GpPSy3gLYBfAQ6W9M87kUjz4QC8UyG36, их я не могу менять. Просто с некоторых адресов идут сотнями боты, их нужно блокировать.
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
24.06.2016, 21:19
Дмитрий-5, там символы на конце строки, надо trim-ом пройтись
что то вроде
PHP
1
2
3
4
5
6
7
8
<?php
$r = trim($_GET['r']);
foreach(file('disallow.txt') as $line) {
    $line = trim($line);
    if ($r === $line) {
        die('');
    }
}
0
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 7
24.06.2016, 21:24  [ТС]
Cra3y, Adobe dreamweaver ругается на твой код, где-то ошибка наверно
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
24.06.2016, 21:33
Лучший ответ Сообщение было отмечено Дмитрий-5 как решение

Решение

Не по теме:

Уже не первый раз мне говорят, что Adobe дерьмьвевер dreamweaver ругается на рабочий код =\


Дмитрий-5, а если так?
PHP
1
2
3
4
5
6
7
8
9
<?php
$r = trim($_GET['r']);
$data = file('disallow.txt');
foreach($data as $line) {
    $line = trim($line);
    if ($r === $line) {
        die('');
    }
}
Добавлено через 1 минуту
Цитата Сообщение от Дмитрий-5 Посмотреть сообщение
(около 7 тыс. шт.)
ИМХО, такое количество лучше в БД загнать...
1
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 7
24.06.2016, 21:38  [ТС]
Cra3y Залил на сервер, сайт перестал работать, пишет "Parse error: syntax error, unexpected '<'.........."
Так что Adobe Dreamweaver наверно не зря ругался ))))
Там случайно не нужно ставить закрывающий тег >
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
24.06.2016, 21:40
Дмитрий-5, все зависит от того как вы код добавляли...
0
0 / 0 / 0
Регистрация: 24.06.2016
Сообщений: 7
24.06.2016, 21:46  [ТС]
Cra3y, убрал в начале <?php и все заработало, спасибо.
0
Software Engineer
 Аватар для Custos
332 / 335 / 55
Регистрация: 23.09.2014
Сообщений: 993
24.06.2016, 23:14
Дмитрий-5, как выше заметили - большое количество рефералов лучше хранить в базе.

1) Создаем в базе таблицу forbidden_refs. Запрос для создания таблицы:

SQL
1
2
3
4
CREATE TABLE `forbidden_refs` (
  `referrer` VARCHAR(128) COLLATE utf8_unicode_ci NOT NULL,
  KEY `referrer` (`referrer`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
2) Качаем и ставим библиотеку: https://www.cyberforum.ru/post9301371.html

3) Добавляем проверку проверку:
PHP
1
2
3
4
if (isset($_GET['r']) && qb()->table('forbidden_refs')->where(array('referrer' => $_GET['r']))->exists()) {
    header('HTTP/1.0 403 Forbidden');
    exit('Доступ запрещен');
}
Цитата Сообщение от Дмитрий-5 Посмотреть сообщение
создал текстовый файл disallow.txt, туда вставил весь список (около 7 тыс. шт.)
Можно с этого файлика заполнить базу:
PHP
1
2
3
4
5
6
7
8
9
10
11
$refs = array_map(function ($value) {
    return array(
        'referrer' => $value
    );
}, file('disallow.txt'));
 
// Очистить таблицу от старых рефералов
qb()->table('forbidden_refs')->truncate();
 
// Добавить в таблицу все рефералы с файла disallow.txt
qb()->table('forbidden_refs')->insert($refs, true);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.06.2016, 23:14
Помогаю со студенческими работами здесь

Как можно заблокировать очередь и как ее очистить и терять поступающие заявки?
Уважаемый администратор Сергей, господа посетители форума! Не поможете ли разобраться с тем как можно очистить очередь и как можно ее...

Как можно заблокировать изменение файлов на флеш-носителях?
Как можно заблокировать изминение файлов на флеш-носителях??? ЗЫ файловая система NTFS и ос Windows XP

Можно ли как-то заблокировать установку приложений от определенного издателя?
В частности от mail.ru. Это конечно не совсем вирус, но поведение похожее: самокопируется, прячется и жрет оперативку

Как можно заблокировать пользователю доступ к регистрации на сайте?
Какими способами можно заблокировать пользователю доступ к регистрации на сайте Drupal?

Можно ли как-то заблокировать e-mail,чтобы остальным не бросало форму?
Доброго {TimeOfDay} Пришло письмо: DHL Express Head Office: Benin Lot No. 28 Patte D'Oie 03 BP 3147 Cotonou. Dear...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru