xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Добавляем в системный журнал функцию блокировки по ip

Опубликовано в

Код добавляет в записи системного журнала ссылку на блокировку адреса:

После клика на ссылке, адрес попадает в чёрный список (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&nbsp;&nbsp;[ ' . $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
Похожие записи

Комментарии RSS

пасибо, то что надо

здорово, спасибо.

Эта функция есть только в данном модуле или в самом друпале? Проще говоря, модуль только добавляет ссылку на бан ип или добавляет функцию бана в друпал?

функция по ограничению доступа есть в ядре шестого друпала, из семёрки она убрана

у меня почему то при нажатии на линк пустая белая страница с адресом /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))

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании