#1
16 января 2012 в 18:31
Который раз наблюдаю, что после добавления пользователя в бан лист он продолжает гулять по сайту, не смотря на бан даже по IP. Может можно как то реализовать завершение сессии у этого пользователя? Или как-нибудь модернизировать бан лист!?
#2
16 января 2012 в 18:33
Tesper, проверял лично данную функцию — гулять не удавалось…
#3
16 января 2012 в 18:38
Madmax, и всё же можно как то завершать сессию пользователя, для админов-параноиков?
Сегодня в 08:53
#4
14 февраля 2012 в 03:06
Прямо сейчас проверил — пользователь спокойно продолжает гулять по сайту…Tesper, проверял лично данную функцию — гулять не удавалось ...
#5
14 февраля 2012 в 10:26
Аналогичная проблема.
#6
14 февраля 2012 в 11:29
А как быть с теми у кого ип адрес меняется каждый раз при подключении к интернету?
Madmax, попробуй проверить тоже самое, но с модема.
я в одной газете производил следующие действия:
прошел по ссыле>проголосовал>закрыл>браузер>вырубил>интернет.
включил инет>открыл браузер>прошел по c.......
в общем я за 3 дня вывел человека на первое место.
пысы
правда они один хер меня кинули. мну это уже другая история
я в одной газете производил следующие действия:
прошел по ссыле>проголосовал>закрыл>браузер>вырубил>интернет.
включил инет>открыл браузер>прошел по c.......
в общем я за 3 дня вывел человека на первое место.
пысы
правда они один хер меня кинули. мну это уже другая история
#8
15 февраля 2012 в 01:20
Проблема кстати не решаема в принципе, объясню почему.
Во первых, тех кого обычно банишь, являются как назло продвинутыми и скандальными типами, которые неплохо понимают как пользоваться проксями.
Во вторых если динамический IP-адрес, то достаточно заново подключиться к Интернету и матери всех, на чем свет стоит заново, пока тебя опять на 3 мин не заблочат.
В третьих некоторые используют различные проги или браузеры для анонимного серфинга. Он лайн сервисов тьма, так для примера
anonimsurfer.profikom.ru/
www.samair.ru/proxy/type-15.htm
anonymouse.org
Даже если админ совсем разозлиться и сделает безумный бан по маске то и тут начинаем юзать ssl анонимайзер и опять возвращаемся
Короче вариантов много можно писать и писать. Одним словом бан сделан для нормальных пользователей, казлы его всегда обойдут.
Во первых, тех кого обычно банишь, являются как назло продвинутыми и скандальными типами, которые неплохо понимают как пользоваться проксями.
Во вторых если динамический IP-адрес, то достаточно заново подключиться к Интернету и матери всех, на чем свет стоит заново, пока тебя опять на 3 мин не заблочат.
В третьих некоторые используют различные проги или браузеры для анонимного серфинга. Он лайн сервисов тьма, так для примера
anonimsurfer.profikom.ru/
www.samair.ru/proxy/type-15.htm
anonymouse.org
Даже если админ совсем разозлиться и сделает безумный бан по маске то и тут начинаем юзать ssl анонимайзер и опять возвращаемся
Короче вариантов много можно писать и писать. Одним словом бан сделан для нормальных пользователей, казлы его всегда обойдут.
#9
15 февраля 2012 в 01:35
"бана нет!", Вы хотели сказать, я Вас правильно пониманию?Одним словом бан сделан для нормальных пользователей
#10
15 февраля 2012 в 10:10
Такова суровая виртуальная реальность."бана нет!", Вы хотели сказать, я Вас правильно пониманию?
И это не имеет никакого отношения к недоработке в InstantCMS, на всех других двигах Joomla, Wordpress, Drupal и.т.д. то же самое
#11
16 февраля 2012 в 17:08
Нашел решение:
1. Открываем /core/classes/user.class.php
2. Ищем следующее:
3. Полностью заменяем этот код на этот:
4. И по желанию можно убрать на мой взгляд весьма глупую функцию, которая при наличии пользователя в бан-листе выдает ошибку авторизации:
И так, что же у нас получилось: теперь независимо от IP пользователя если его логин в бан-листе, то он не сможет пользоваться сайтом. Если выполнили 4 пункт, то при авторизации пользователя встретит уведомление о том, что он забанен и покажет ему сроки.
1. Открываем /core/classes/user.class.php
2. Ищем следующее:
public function checkBan(){ $inDB = cmsDatabase::getInstance(); $inCore = cmsCore::getInstance(); $current_ip = $this->ip; if ($inDB->rows_count('cms_banlist', "ip = '$current_ip' AND status=1")){ $ban = $inDB->get_fields('cms_banlist', "ip = '$current_ip' AND status=1", 'int_num, int_period, autodelete, id, status, bandate'); $interval = $ban['int_num'] . ' ' .$ban['int_period']; //Check expired $sql = "SELECT * FROM cms_banlist WHERE id = {$ban['id']} AND bandate <= DATE_SUB(NOW(), INTERVAL $interval) AND int_num > 0 LIMIT 1"; $rs = $inDB->query($sql); if (!$inDB->errno()){ if ($inDB->num_rows($rs)){ if ($ban['autodelete']){ //delete $inDB->query("DELETE FROM cms_banlist WHERE id={$ban['id']}"); } else { //close $inDB->query("UPDATE cms_banlist SET status=0 WHERE id={$ban['id']}"); } } else { echo '<div style="color:red"><strong>Ваш доступ к сайту заблокирован</strong></div>'; echo '<div style="padding:15px;">'; echo '<div><strong>Дата блокировки:</strong> '.$ban['bandate'].'</div>'; if ($ban['int_num']<=0){ echo '<div><strong>Срок блокировки:</strong> бесконечен</div>'; } else { echo '<div><strong>Срок блокировки:</strong> '.$interval.'</div>'; } echo '</div>'; $inCore->halt(); } } } }
public function checkBan(){ $inDB = cmsDatabase::getInstance(); $inCore = cmsCore::getInstance(); if ($inDB->rows_count('cms_banlist', "user_id = '$user_id' AND status=1")){ $ban = $inDB->get_fields('cms_banlist', "user_id = '$user_id' AND status=1", 'int_num, int_period, autodelete, id, status, bandate'); $interval = $ban['int_num'] . ' ' .$ban['int_period']; //Check expired $sql = "SELECT * FROM cms_banlist WHERE id = {$ban['id']} AND bandate <= DATE_SUB(NOW(), INTERVAL $interval) AND int_num > 0 LIMIT 1"; $rs = $inDB->query($sql); if (!$inDB->errno()){ if ($inDB->num_rows($rs)){ if ($ban['autodelete']){ //delete $inDB->query("DELETE FROM cms_banlist WHERE id={$ban['id']}"); } else { //close $inDB->query("UPDATE cms_banlist SET status=0 WHERE id={$ban['id']}"); } } else { echo '<div style="color:red"><strong>Ваш доступ к сайту заблокирован</strong></div>'; echo '<div style="padding:15px;">'; echo '<div><strong>Дата блокировки:</strong> '.$ban['bandate'].'</div>'; if ($ban['int_num']<=0){ echo '<div><strong>Срок блокировки:</strong> бесконечен</div>'; } else { echo '<div><strong>Срок блокировки:</strong> '.$interval.'</div>'; } echo '</div>'; $inCore->halt(); } } } }
if (self::isBanned($user['id'])) { $inDB->query("UPDATE cms_banlist SET ip = '{$this->ip}' WHERE user_id = '{$user['id']}' AND status = 1"); return $default_back_url; }