ПаскальПопробуйте данную инструкцию в common.php прописать.. хотя я не уверен что изменится результат. А ещё можно поискать где в коде находится проверка на бан по IP и использовать в том месте.
Добавлено спустя 2 минуты 54 секунды:P.S.
В файле sessions.php надо копать
Добавлено спустя 3 минуты 18 секунд:А ещё лучше взять оттуда код:
- Код: Выделить всё
//
// Initial ban check against user id, IP and email address
//
preg_match('/(..)(..)(..)(..)/', $user_ip, $user_ip_parts);
$sql = "SELECT ban_ip, ban_userid, ban_email
FROM " . BANLIST_TABLE . "
WHERE ban_ip IN ('" . $user_ip_parts[1] . $user_ip_parts[2] . $user_ip_parts[3] . $user_ip_parts[4] . "', '" . $user_ip_parts[1] . $user_ip_parts[2] . $user_ip_parts[3] . "ff', '" . $user_ip_parts[1] . $user_ip_parts[2] . "ffff', '" . $user_ip_parts[1] . "ffffff')
OR ban_userid = $user_id";
if ( $user_id != ANONYMOUS )
{
$sql .= " OR ban_email LIKE '" . str_replace("\'", "''", $userdata['user_email']) . "'
OR ban_email LIKE '" . substr(str_replace("\'", "''", $userdata['user_email']), strpos(str_replace("\'", "''", $userdata['user_email']), "@")) . "'";
}
if ( !($result = $db->sql_query($sql)) )
{
message_die(CRITICAL_ERROR, 'Could not obtain ban information', '', __LINE__, __FILE__, $sql);
}
if ( $ban_info = $db->sql_fetchrow($result) )
{
if ( $ban_info['ban_ip'] || $ban_info['ban_userid'] || $ban_info['ban_email'] )
{
message_die(CRITICAL_MESSAGE, 'You_been_banned');
}
}
И переделать под свои нужды. А именно условие
- Код: Выделить всё
if ( $ban_info = $db->sql_fetchrow($result) )
заменить на обратное
- Код: Выделить всё
if ( $ban_info != $db->sql_fetchrow($result) )
и вместо
- Код: Выделить всё
message_die(CRITICAL_MESSAGE, 'You_been_banned');
сделать свой редирект на страницу error.php.
И соответственно, в стандартной функции бана по IP, которая в админке, добавить "белые" IP адреса. Короче говоря, будет бан наоборот.