MOD - Banowanieoryginalny tytuł
[MOD] Ban v1.7 Autor:
V@noŹródło:
http://www.4homepages.de/forum/index.phpBanowanie czyli jak zabronić komuś dostępu do naszej strony.
Za pomocą tej modyfikacji, możemy zwiększyć bezpieczeństwo galerii, po przez odebranie prawa dostępu osobą które łamię regulamin, bądź też osobą, które próbują nie legalnie dostać się do galerii.
Przypominam jednocześnie, że nie ma zabezpieczeń idealnych, możemy traktować tą modyfikację,
jako dodatkowe utrudnienie przeciwko łobuzom internetowych.
Modyfikacja ta blokuje dostęp do galerii na pięciu płaszczyznach:
IP: -
Nazwa Hostu: -
ID użytkownika: -
Nazwisko: -
Email:Przykład blokowania IP:
83.69.102.33 lub pewien zakres
83.69.*.* lub
83.69.102.0-9Przykład blokowania Hostu:
net-88-68-1-120-aol.com lub całej grupy
*aol.comBlokowanie ID użytkownika:
dotyczy użytkowników zarejestrowanych, wpisujemy numer ID użytkownika
Blokada nazwiska:
analogicznie dotycz użytkownika zarejestrowanego lub próbującego się zarejestrować, nazwisko, nick, pseudonim.
Przykład blokady adresu mailowego:
adres@domena.com lub wszystkich adresów z tej domeny
*@domena.comDodatkowo możemy określić czas trwania zakazu od-do, lub od-na okres nie określony.
Instalacja: łatwa
Czas około 30 minut
Nowe plik
/admin/plugins/ban.php/templates/<twoj_szablon>/ban.htmlZmienione zostaną pliki:
/admin/settings.php/includes/constants.php/includes/functions.php/includes/sessions.php/lang/polish/admin.php/lang/polish/main.php/member.phpPrzypominam o wykonaniu kopii bazy danych mySQL i backup.
Krok 1.Otwórz plik
admin/settings.phpW pliku
settings.php, musimy ustalić najpierw ostatnio zainstalowaną grupę opcji.
Jeżeli nie instalowaliśmy do tej pory żadnej modyfikacji, której opcje ustawiane są w administracyjnym panelu kontrolnym, to w standartowej instalacji 4images ostatnią grupą opcji jest grupa 7, odszukaj tą grupę używając fragmentu kodu
show_table_separator($setting_group
Bardzo ważną sprawą jest to, abyśmy byli pewni numeru, ostaniej zainstalowanej grupy.
Np.: jeżeli ostatnią zainstalowaną grupą , jest grupa 7, to nasza nowa grupa będzie miała numer 8odszukaj
show_form_footer($lang['save_changes'], "", 2);
i przed tym kodem dodaj
/*
MOD BAN
START INSERT
*/
show_table_separator($setting_group[XX], 2, "#setting_group_XX");
show_setting_row("look_hostname", "radio");
/*
MOD BAN
END INSERT
*/
w miejsce
XX wstaw numer nowej grupy wynikający z jej kolejności.
Krok 2.Otwórz plik
includes/constants.php i na samym końcu, przed znakiem
?>
dodaj
/*
MOD BAN
START INSERT
*/
define("BAN_TABLE", $table_prefix."ban");
define("BAN_LOGS_TABLE", $table_prefix."ban_logs");
define("BAN_IP", 1);
define("BAN_HOSTNAME", 2);
define("BAN_USERID", 3);
define("BAN_NAME", 4);
define("BAN_EMAIL", 5);
/*
MOD BAN
END INSERT
*/
Krok 3.Otwórz plik
includes/functions.php i na samym końcu, przed znakiem
?>
dodaj
/*
MOD BAN
START INSERT
*/
function check_ban()
{
global $user_info, $site_sess, $config, $lang, $site_db, $HTTP_GET_VARS;
$types = array("ip", "hostname", "name", "user_id", "email");
if (!$config['ban_update'])
{
return false;
}
if ($user_info['user_level'] == ADMIN)
{
if (!isset($HTTP_GET_VARS['bantest'])) return false;
$return = true;
foreach ($types as $key)
{
if (isset($HTTP_GET_VARS[$key]) && $$key = $HTTP_GET_VARS[$key]) $return = false;
else $$key = "";
}
if ($return) return false;
$force = true;
}
else
{
$ip = $site_sess->session_info['session_ip'];
$email = $user_info['user_email'];
$user_id = $user_info['user_id'];
$name = $user_info['user_name'];
$hostname = "";
$force = false;
}
$ban = false;
$ban_checked = $site_sess->get_session_var("ban_checked");
$ban_userid = $site_sess->get_session_var("ban_userid");
$ban_banned = $site_sess->get_session_var("ban_banned");
if (get_magic_quotes_gpc() != 0)
{
$ban_banned = stripslashes($ban_banned);
}
// $ban_banned = stripslashes($ban_banned); //uncomment this line if magic_quotes_gpc is turned on on your server
$ban_banned = ($ban_banned) ? unserialize($ban_banned) : "";
if ($force || (!$ban_checked || !$ban_userid || ($ban_userid && $ban_userid != $user_info['user_id']) || ($ban_checked && $ban_checked < $config['ban_update']) || ($ban_banned && $ban_banned['expire'] < time())))
{
$query = array();
if (preg_match('/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/', $ip, $ip_chop) == 1)
{
$query[] = "(type = ".BAN_IP." AND ($ip_chop[1] BETWEEN ip1_start AND ip1_end) AND ($ip_chop[2] BETWEEN ip2_start AND ip2_end) AND ($ip_chop[3] BETWEEN ip3_start AND ip3_end) AND ($ip_chop[4] BETWEEN ip4_start AND ip4_end))";
if ($config['look_hostname'] && !$hostname)
{
$hostname = @gethostbyaddr($ip);
}
}
if ($hostname)
{
$query[] = "(type = ".BAN_HOSTNAME." AND ('$hostname' LIKE hostname))";
}
if ($email)
{
$query[] = "(type = ".BAN_EMAIL." AND ('".addslashes($email)."' LIKE email))";
}
if ($user_id && $user_id > GUEST)
{
$query[] = "(type = ".BAN_USERID." AND user_id = ".$user_id.")";
}
if ($name)
{
$query[] = "(type = ".BAN_NAME." AND ('".addslashes($name)."' LIKE name))";
}
if (!empty($query))
{
$sql = "SELECT id, type, message, date, expire
FROM ".BAN_TABLE."
WHERE (".implode(' OR ', $query).")";
if ($result = $site_db->query($sql))
{
while ($row = $site_db->fetch_array($result))
{
$site_sess->set_session_var("ban_banned", addslashes(serialize($row)));
if ($row['date'] <= time() && (!$row['expire'] || $row['expire'] > time()))
{
$ban = $row;
break;
}
}
}
else
{
$site_sess->set_session_var("ban_banned", "");
}
}
$site_sess->set_session_var("ban_checked", time());
$site_sess->set_session_var("ban_userid", $user_info['user_id']);
}
elseif ($ban_banned && $ban_banned['date'] <= time() && (!$ban_banned['expire'] || $ban_banned['expire'] > time()))
{
$ban = $ban_banned;
}
return $ban;
}
/*
MOD BAN
END INSERT
*/
Krok 4.
Otwórz plik
includes/sessions.php i odszukaj
$user_info = $site_sess->return_user_info();
i za tym kodem dodaj
/*
MOD BAN
START INSERT
*/
if ($ban = check_ban())
{
$sql = "INSERT INTO ".BAN_LOGS_TABLE."
(date, ip, uri, ban_id, user_id)
VALUES
(".time().", '".$site_sess->session_info['session_ip']."', 'http".(($_SERVER['SERVER_PORT'] != 80) ? "s" : "")."//".$_SERVER['SERVER_NAME'].addslashes($_SERVER['REQUEST_URI'])."', ".$ban['id'].", '".$user_info['user_id']."')";
$site_db->query($sql);
$main_template = "ban";
$config['badword_list'] = "";
include(ROOT_PATH.'includes/page_header.php');
$site_template->register_vars(array(
"lang_ban" => $lang['ban_banned'],
"message" => format_text($ban['message'], 1, 0, 1, 1, 1, 1)
));
$site_template->print_template($site_template->parse_template($main_template));
include(ROOT_PATH.'includes/page_footer.php');
exit;
}
/*
MOD BAN
END INSERT
*/
Krok 5Otwórz plik
lang/polish/admin.php i na samym końcu, przed znakiem
?>
dodaj
/*
MOD BAN
START INSERT
*/
/*-- Setting-Group XX --*/
$setting_group[XX]="Zakaz [Ban]";
$setting['look_hostname'] = "Lookup hostnames<span class=\"smalltext\"><br />might affect the perfomance";
$lang['ban'] = "Zakaz [Ban]";
$lang['ban_ip'] = "IP:";
$lang['ban_ip_expl'] = "<span class=\"smalltext\">np.: 123.123.123.123 lub 123.123.123.* lub 123.123.123.0-255</span>";
$lang['ban_user_id'] = "ID:";
$lang['ban_email'] = "Email:";
$lang['ban_email_expl'] = "<span class=\"smalltext\">np.: example*@example.com</span>";
$lang['ban_name'] = "Nazwisko:";
$lang['ban_name_expl'] = "<span class=\"smalltext\">np.: example*</span>";
$lang['ban_hostname'] = "Nazwa Hostu:";
$lang['ban_hostname_expl'] = "<span class=\"smalltext\">np.: *.aol.com</span>";
$lang['ban_add'] = "Dodaj nowy zakaz [ban]";
$lang['ban_edit'] = "Edytuj zakazy";
$lang['ban_date'] = "Data/start";
$lang['ban_date_expl'] = "<span class=\"smalltext\">rrrr-mm-dd hh:mm:ss</span>";
$lang['ban_expire'] = "Data/koniec";
$lang['ban_expire_expl'] = "(jeżeli wpiszesz 0 zakaz [ban] jest czasowo nie ograniczony)<br /><span class=\"smalltext\">rrrr-mm-dd hh:mm:ss</span>";
$lang['ban_message'] = "Wiadomość";
$lang['ban_message_expl'] = "<span class=\"smalltext\">Ta wiadomość zostanie wyświetlona osobie, której zakaz dotyczy.</span>";
$lang['ban_reason'] = "Powód";
$lang['ban_reason_expl'] = "<span class=\"smalltext\">wpisz powód zakazu [banu] Ta wiadomość przypomni Ci powód, dla którego ustanowiłeś ten zakaz</span>";
$lang['ban_required'] = array(
BAN_IP => "Proszę wpisz IP",
BAN_HOSTNAME => "Proszę wpisz nazwę hostu",
BAN_USERID => "Proszę wpisz ID użytkownika",
BAN_NAME => "Proszę wpisz nazwisko",
BAN_EMAIL => "Proszę wpisz email"
);
$lang['ban_bad_entry'] = array(
BAN_IP => "IP jest nieprawidłowe",
BAN_HOSTNAME => "Nazwa Hostu jest nieprawidłowa",
BAN_USERID => "ID użytkownika jest nieprawidłowe",
BAN_NAME => "Nazwisko jest nieprawidłowe",
BAN_EMAIL => "Email jest nieprawidłowe"
);
$lang['ban_dublicate'] = array(
BAN_IP => "To IP jest już zapisane jako zakaz [ban] w bazie danych",
BAN_HOSTNAME => "Ten Host jest już zapisany jako zakaz [ban] w bazie danych",
BAN_USERID => "Ten Id jest już zapisany jako zakaz [ban] w bazie danych",
BAN_NAME => "To nazwisko jest już zapisane jako zakaz [ban] w bazie danych",
BAN_EMAIL => "Ten adres emailowy jest już zapisany jako zakaz [ban] w bazie danych"
);
$lang['ban_type_array'] = array(
BAN_IP => "IP:",
BAN_HOSTNAME => "Nazwa hostu:",
BAN_USERID => "ID użyt.:",
BAN_NAME => "Użytkownik:",
BAN_EMAIL => "Email:"
);
$lang['ban_list'] = "Lista zakazów [banów]";
$lang['ban_type'] = "Typ zakazu";
$lang['ban_value'] = "Wartość";
$lang['ban_add_success'] = "Zakaz [Ban] dodany poprawnie";
$lang['ban_add_error'] = "Błąd w dodawaniu zakayu [Bana]";
$lang['ban_update_success'] = "Aktualizacja zakazu prawidłowa";
$lang['ban_update'] = "Aktualizacja";
$lang['ban_update_error'] = "Błąd w aktualizacji zakazu";
$lang['ban_edit_error'] = "Błąd w zapisie";
$lang['ban_edit_success'] = "Zapis prawidłowy";
$lang['ban_delete_error'] = "Błąd w usuwaniu zakazu [bana]";
$lang['ban_delete_success'] = "Zakaz [ban] został pomyślnie usunięty";
$lang['ban_filter'] = "Filtry";
$lang['ban_menu'] = "Menu systemu banowania";
$lang['ban_whois'] = "Kto jest online";
$lang['ban_action'] = "Akcja";
$lang['ban_perm'] = "Nigdy";
$lang['ban_perpage'] = " <br /> <br /> wyświetleń na stronie";
$lang['ban_logs'] = "Sesje";
$lang['ban_uri'] = "Odwiedził URL";
$lang['ban_user_name'] = "Użytkownik";
$lang['ban_date_access'] = "Data";
$lang['ban_logs_del_success'] = "Sesja usunięta prawidłowo";
$lang['ban_logs_del_error'] = "Błąd przy usuwaniu sesji";
$lang['ban_active'] = "Aktywni";
$lang['ban_expired'] = "Zakończone";
$lang['ban_notactive'] = "Nie aktywni";
$lang['bad_invalid_date'] = "End date must be bigger then start date";
$lang['ban_copy'] = "Kopiuj";
$lang['ban_test'] = "Test";
/*
MOD BAN
END INSERT
*/
w miejsce
XX wstaw numer nowej grupy wynikający z kroku 1
Krok 6.Otwórz plik
lang/polish/main.php i na samym końcu, przed znakiem
?>
dodaj
/*
MOD BAN
START INSERT
*/
$lang['ban_banned'] = "Prawo dostępu do serwisu zostało odebrane. <br /><br />Du bis verbannt.<br /><br />You've been banned";
/*
MOD BAN
END INSERT
*/
Krok 7.Pobierz pliki instalacyjne
Ban v1.7 .zip poniżej.
Rozpakuj, załaduj na serwer:
/ban_install.php/admin/plugins/ban.php/templates/<twoj_szablon>/ban.htmlW przeglądarce internetowej wykonaj
http://www.twoja_domena.pl/ban_install.phpPo zainstalowaniu rozszerzenia bazy danych MySQL, usuń plik
/ban_install.phpDopasuj plik
ban.html do twojego szablonu.
Krok 8.Otwórz plik
member.php i odszukaj
if ($user_row = get_user_info($user_id)) {
i zmień go na
if (($user_info['user_level'] == ADMIN || !$site_db->query_firstrow("SELECT id FROM ".BAN_TABLE." WHERE type = ".BAN_USERID." AND user_id = ".$user_id." AND (NOT expire OR expire > ".time().") LIMIT 1")) && $user_row = get_user_info($user_id)) {