Сайт сообщества | Клуб пользователей | О проекте

Имя
Пароль
ПравилаРегистрацияСправка
Сообщения за деньПоиск

Вернуться   Клуб пользователей портальной системы RUNCMS > Опен Ресурс > Разработчикам

 
 
Опции темы Опции просмотра
ZlydenGL вне форума ZlydenGL
Напильникъ - наше все

Аватар для ZlydenGL

| Цитировать Старый #1 02-08-2013, 14:03

Как известно, если на сайт пытается зайти пользователь с IP адресом, входящим в черный список, то ему отдается просто пустая страница со статусом 404. На самом деле это не совсем удобно - ведь можно же случайно заблокировать и "живых" пользователей.

Проблема актуальна и для ветки. 1.6.х, и для 2.2.х. Лечится ОЧЕНЬ просто!

Для ветки 1.6.х открываем файл class/core.php и ищем строки
PHP код:
         if (hasMatch($xoopsBadIps_REMOTE_ADDR) || hasMatch($xoopsBadAgents_HTTP_USER_AGENT))
         { 
После них добавляем
PHP код:
            $fps = @fopen(XOOPS_ROOT_PATH.'/cache/blackip_access.txt','a+');
            if (
$fps) {
               @
fputs($fps'Date: '.date("d-m-Y H:i:s").' | From: '_REMOTE_ADDR .' | Agent: '_HTTP_USER_AGENT .' | Page: '.$meta["title"].' ('.XOOPS_URL_REQUEST_U
               
@fclose($fps);
            } 
Затем пропускаем строку
PHP код:
header('Status: 404 Not Found'); 
И ниже нее добавляем через обычный echo() любой текст. Я например добавил такой:
PHP код:
            echo "По какой-то причине Ваш IP адрес попал в черный список. Пожалуйста, свяжитесь с нами по почте <a href='".$xoopsConfig['adminmail']."'>".$xoopsConfig['adminmail']."</a> для разблокировки.";
            echo 
"<br><br><br>";
            echo 
"For some reason your IP address was detected as blacklisted. Please, contact with us by mail <a href='".$xoopsConfig['adminmail']."'>".$xoopsConfig['adminmail']."</a> for unblocking activities."
Для версии 2.2.х все то же самое, только нужен файл include/common.php, XOOPS нужно заменить на RCX, а якорная строка соответственно выглядит так:
PHP код:
if ($rcxConfig['prefix'] && $rcxConfig['dbhost'] && $rcxConfig['dbname'] && $rcxConfig['database']) { 
Все! На выходе:
1. Пользователи получат нормальное сообщение и адрес для связи.
2. Администратор в папке cache в файле badips_access.log увидит еще и простукивание (и сможет сам предпринять соответствующее действие).

Еще более правильным действием было бы сделать просто инклюд "ошибочной" страницы (а еще лучше - задавать этот текст из админки), но в качестве хотфикса подойдет и это ИМХО

Последний раз редактировалось ZlydenGL, 02-08-2013 в 14:19
Причина: Добавил ссылку на почту из xoopsconfig


Не ошибается только тот, кто ничего не делает. Ковчег построил любитель. Профессионалы строили Титаник.
  Сообщения: 777 c 22.09.2008 | Репутация: 92
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Рейтинг@Mail.ru Хостинг провайдер Majordomo. Powered by: vBulletin Version 3.0
Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Все разделы прочитаны - Руководство форума - Архив - Вверх
Rambler's Top100
Output: 147.74 Kb. compressed to 145.94 Kb. by saving 1.80 Kb. (1.22%)
Page generated in 0.10501 seconds with 11 queries