Код добавляет в записи системного журнала ссылку на блокировку адреса:
После клика на ссылке, адрес попадает в чёрный список (admin/user/rules
).
/**
* Implements hook_menu().
*/
function mymodule_menu() {
$items = array();
$items['ban/%'] = array(
'page callback' => 'mymodule_ban_by_ip',
'page arguments' => array(1),
'access arguments' => array('administer permissions'),
'type' => MENU_CALLBACK,
);
return $items;
}
/**
* Implements template_preprocess_page().
*/
function mymodule_preprocess_page(&$vars) {
$item = menu_get_item();
if ($item['path'] == 'admin/reports/event/%') {
$link = '<a href="' . $GLOBALS['base_path'] . 'ban/$1?destination=' . $_GET['q'] . '">забанить</a>';
$vars['content'] = preg_replace(
'#<th>' . t('Hostname') . '</th><td>(.+?)</td>#',
'<th>' . t('Hostname') . '</th><td>$1 [ ' . $link . ' ]</td>',
$vars['content']
);
}
}
/**
* Ban user by IP.
*/
function mymodule_ban_by_ip($ip) {
if ($ip != ip_address()) {
db_query("INSERT INTO {access} (mask, type, status) VALUES ('%s', '%s', %d)", $ip, 'host', 0);
drupal_set_message('Адрес заблокирован');
}
drupal_goto();
}
Написанное актуально для
Drupal 6
Комментарии
пасибо, то что надо
здорово, спасибо.
Эта функция есть только в данном модуле или в самом друпале? Проще говоря, модуль только добавляет ссылку на бан ип или добавляет функцию бана в друпал?
функция по ограничению доступа есть в ядре шестого друпала, из семёрки она убрана
у меня почему то при нажатии на линк пустая белая страница с адресом /ban/27.159.194.78?destination=admin/reports/event/3116
что я неправильно сделал? создал ipban папку, файлы ipban.module, ipban.info
функции переименовал в ipban_menu(), ipban_preprocess_page(&$vars), ipban_ban_by_ip($ip)
А можно по подробней, куда этот код вставить?
Переехал на новый сервер и чет перестал модуль работать. В записи системного журнала показывает ip адрес не посетителя-комментатора, а ip адрес сайта. Как исправить?
Первый раз самозабанился, пришлось в phpmyadmin вручную удалить запись в таблице acess))
Добавить комментарий