Перейти к контенту

Доступ к разделам по IP


Рекомендуемые сообщения

Можно ли написать такой модуль, чтобы он открывал и закрывал доступ к определенным разделам, через админку, по диапазоном IP. К примеру, нужно открыть доступ, к разделу «креки и серийники», только для 10.20.*.* и 212.*.*.*, а для остальных закрыть? Чтобы другие его вообще не видели.
Ссылка на комментарий
Поделиться на других сайтах

Да пусть подбирают. Мне нужно, чтобы мой форум стал доступным из инета. Сейчас он в локалке из-за того, что провайдеру не нравится раздел с варезом. Вот у меня и идея такая возникла.
Ссылка на комментарий
Поделиться на других сайтах

он хочет запрятать форумы вареза от хостера и людей с определенным IP

Именно.

Ну, так это осуществимо? Был бы очень признателен.

Ссылка на комментарий
Поделиться на других сайтах

делается это не так и сложно, достаточно просто динамически изменять пермишены к форуму в зависимости от IP
Ссылка на комментарий
Поделиться на других сайтах

Vanish

Так это можно кого-то пропустить, кто му же за всеми не уследишь, это нужно постоянно сидеть и смотреть, кто зарегенился и с каким ip. А то можно сразу, указать по диапазону, для кого можно, а для кого нельзя.

Ссылка на комментарий
Поделиться на других сайтах

Я еще раз повторяю не ручками, а динамически при выполнении скрипта проверять на принадлежность IP разрешенному диапазону и так же динамически выдавать права на доступ к форуму, т.е. не из базы брать, а менять на ходу.

 

Проверка на принадлежность IP диапазону, см. систему бана по IP.

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

Создаёшь таблицу в БД, в которой используешь поля

id - автоинкрементный id

fid - id форума

ok1

ok2

ok3

ok4 - ИП адрес

 

далее самое нудное написать для этого всего админку (добавление, удаление, измение записей в таблице).

А сама-то проверка доступа - это самое лёгкое. Запрос к этой таблице на равенство либо всех октетов либо звёздочка в каждом из них. Если вернулось значение, и оно совпадает с id раздела, в которое пользователь пытается вылезти значит пропускай. Если нет - от отлуп. :D

Ссылка на комментарий
Поделиться на других сайтах

Но я же не программист, я не могу ничего написать, если бы мог, то не обращался бы сюда. А так я знаю, что тут профессионалы и смог помочь человеку. :D
Ссылка на комментарий
Поделиться на других сайтах

/sources/functions.php

ищешь:

            if ( ($this->member['id'] == 0) or (empty($this->member['id'])) )
            {
   $this->unload_member();
            }

добавляешь после:

            if ( preg_match( "/^10.20.*/", $ibforums->input['IP_ADDRESS']) OR  preg_match( "/^212.*/", $ibforums->input['IP_ADDRESS'])) {
                        $this->member['valid_warez_ip'] = true;
            } else {
                        $this->member['valid_warez_ip'] = false;
            }

 

/sources/Boards.php

 

ищешь:

   if ( $std->check_perms($forum_data['read_perms']) != TRUE )
	 {
   return "";
	 }

	 //--------------------------------------
	 // Redirect only forum?
	 //--------------------------------------

перед добавляешь

 if ($forum_data['id'] == 'ид_форума' && $ibforums->member['valid_warez_ip'])
            {
                    $forum_data['read_perms']  = '*';
            }
            elseif ($forum_data['id'] == 'ид_форума')
            {
                return "";
            }

 

/sources/Forums.php:

ищешь:

 function check_access() {
 global $ibforums, $std, $HTTP_COOKIE_VARS, $EB;

 $return = 1;

добавляешь после:

                if ( $this->forum['id'] == 'ид_форума' AND $ibforums->member['valid_warez_ip'])
                {
                        $return = 0;
                }

 

/sources/Topics.php

ищешь:

   $this->topic = $DB->fetch_row();
        }
        else
        {
         $this->topic = $ibforums->topic_cache;
        }

после добавляешь:

        if ($this->topic['forum_id'] == 'ид_форума' && $ibforums->member['valid_warez_ip'] )
        {
            $this->topic['read_perms']  = '*';
            $this->topic['start_perms'] = '*';
            $this->topic['reply_perms'] = '*';
            $this->forum['upload_perms'] = '*';
        }
        elseif ($this->forum['id'] == 'ид_форума')
        {
            $this->forum['read_perms']  = '';
        }

 

соответсвено в ACP отбираешь все права на форум для всех групп (т.е табличка пермишенов должна быть без галок)

 

проверяй, не факт что все правильно вспомнил.

Ссылка на комментарий
Поделиться на других сайтах

  • 3 месяца спустя...

Vanish

Да нет, все работает.

 

соответсвено в ACP отбираешь все права на форум для всех групп (т.е табличка пермишенов должна быть без галок)

То есть нужно снять перпишен со ВСЕХ групп? И как я понял он дает и не дает доступ по IP? Или только блокирует?

Ссылка на комментарий
Поделиться на других сайтах

  • 2 месяца спустя...

Song

далее самое нудное написать для этого всего админку

Можешь помочь в нее написании. Так как такой хак, уже не много не актуальным стал...

Ссылка на комментарий
Поделиться на других сайтах

  • 7 месяцев спустя...

Ребят, проблема стала опять ОЧЕНЬ актуальной.

Кто может предложить хотя бы простой код, как можно закрыть от нескольких диапазонов IP доступ к разделу. Хотя просто, что на главной странице он не просматривался. Я думаю, что для вас это проще простого. Из-за этой проблемы – не могу учувствовать в вашем конкурсе, что очень обидно и не приятно.

Спасибо. Очень надеюсь на помощь.

Ссылка на комментарий
Поделиться на других сайтах

А почему не можешь? Из-за того, что гости-оценщики не должны попадать в определённые разделы? :D
Ссылка на комментарий
Поделиться на других сайтах

ну... тут вообще долгая история

Просто этот форум является официальным - неофициальным бордой компании МигТелеком, которая предоставляет инет услуги. Компания очень крупная и сильно развивается, но там начальство, кхм...

Оно не хочет, чтобы еще не подключившиеся пользователи читали отзывы уже подлюч. юзеров :D По этому и сказали, отрубай рубильник! По этому нужно закрыть всего лишь один долбанный раздел, с гребенным id=8. По этому нужно, чтобы хотя б начальство видело, что его нет. Это встало как кость в горле.

Ссылка на комментарий
Поделиться на других сайтах

Понятно.

 

Так тебе уже выше GIV сказал как это сделать на коленочке?

 

Вставь в Forums.php:

 

if ( $this->forum['id'] == 8 and preg_match( "/^10.20.*/", $ibforums->input['IP_ADDRESS']) )
{
     $std->error(...);
}

Ссылка на комментарий
Поделиться на других сайтах

Дело в том, что раздел все равно виден, у меня самого IP 195... и я его вижу, даже если делаю только для 10.20
Ссылка на комментарий
Поделиться на других сайтах

ну так млин, айпишник уж ты сам можешь в код подставить ? :D
Ссылка на комментарий
Поделиться на других сайтах

Ну так в коде прописываются ИП только те, которым можно смотреть разделы. И моего там нет. Почему тогда я могу его смотреть :D
Ссылка на комментарий
Поделиться на других сайтах

ну измени условие.

Если сам регвыров не знаешь, найди в IPB кусок кода отвечающий за бан пользователей по IP адресу и вставь его в Forums и Topics

 

Нету у меня сейчас кода под рукой, чтобы тебе написать точно.

Ссылка на комментарий
Поделиться на других сайтах

Song, да я готов все сделать, чтобы у тебя был код по рукой был, свет светил и никто не мешал _http://webfile.ru/525332 (тут forums.php).

Очень прошу помочь.

 

:D

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.