Техническая поддержка сервиса Quadro.Boards

Объявление

Идет поиск Хранителя форума

Новости сервиса

О форуме

Quadro.Support – это форум технической поддержки различных проектов и сервисов Quadro.Systems LLC, на котором грамотные технические специалисты всегда смогут помочь вам в решении проблем, или же подсказать ответы на самые сложные вопросы. Так же на форуме собрана обширная база знаний по различным аспектам наших сервисов. Не забывайте пользоваться поиском ;)

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Техническая поддержка сервиса Quadro.Boards » Скрипты и дополнения » Доступ в форум по паролю


Доступ в форум по паролю

Сообщений 1 страница 20 из 40

1

Раз уж этот скрипт с периодичностью раз в 1-2 недели спрашивают, вывешу его здесь.

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

<script>
var forumlink = 'http://sadhaka.rusff.ru';
var forbidden = 3;
var entry = 'пароль';

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}
function pass() {
            if (readCookie('forumpass') == entry ) return true;
            else if (prompt('Администратор установил пароль на этот форум', '') == entry) {
                alert('Пароль принят. Нажмите "ОК" для редиректа');
                createCookie('forumpass', entry, 1);
                location.href = loc;
            }
            else {
                alert('Введенный пароль неверен');
                location.href = forumlink;
            }
        }
        if (location.href.indexOf("viewforum.php?id=" + forbidden) != -1 || (location.href.indexOf("viewtopic.php") != -1  && FORUM.topic.forum_id == forbidden) ) {
            var loc = location.href;
            pass (loc);
}

</script>

Советую отредактировать скрипт, как Вам надо, положить в файл с расширением js, залить в админку и подключить так:

<script type="text/javascript" src="ссылка_на_скрипт"></script>

потому что никто не мешает посмотреть пароль в исходном коде, а так - это будет не столь очевидно.

Настройки:

var forumlink = 'http://sadhaka.rusff.ru'; //Куда редиректить, если пароль неверный
var forbidden = 3; //ID закрытого форума
var entry = 'пароль'; //пароль


Как узнать id форума - можно почитать тут Иконки сообщений, разделов, тем.
Более интересный вариант Доступ к Теме-Форуму по Коду в Статусе


Если надо сразу много форумов запаролить

<script>
    var forumlink = 'http://sadhaka.rusff.ru';
    var forbidden = {
        //id форума : "пароль"
        3: "entry",
        1: "done"
    }

    function createCookie(name,value,days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    }
    function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    }
    function getUrlDate() {
        var param = {};
        var getURL = location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(t,key,value) {
            param[key] = value;
        });
    return param;
    }
    function pass(url, id) {
                if (readCookie('forumpass'+id) == forbidden[id] ) return true;
                else { $("body").css("display","none");
                     if (prompt('Администратор установил пароль на этот форум', '') == forbidden[id]) {
                    alert('Пароль принят. Нажмите "ОК" для редиректа');
                    $("body").css("display","block");
                    createCookie('forumpass'+id, forbidden[id], 1);
                    location.href = url;
                }
                else {
                    alert('Введенный пароль неверен');
                    location.href = forumlink;
                }
            }}
    if (location.href.indexOf("viewforum.php") != -1) {
        var fID = getUrlDate()["id"]; 
    }
    else if (location.href.indexOf("viewtopic.php") != -1) {
        var fID = FORUM.topic.forum_id;
    }
    if (fID in forbidden) {
        var loc = location.href;
        pass (loc, fID);
    }
    </script>

Настройки чуть меняются

var forumlink = 'http://sadhaka.rusff.ru';
    var forbidden = {
        //id форума : "пароль"
        3: "entry",
        1: "done" //после последнего запятая не нужна
    }


var forumlink - ссылка для редиректа (1 раз)
var forbidden - заполняете согласно схеме id форума : "пароль"

Теги: доступ по паролю, пароль на форум

+1

2

sadhaka написал(а):

//будет работать только на форумах QB

С чего? Скрипт отлично работает и на MyBB форумах.

0

3

Fover
Изначально (для того, для кого писался скрипт) скрипт был завязан только на QB-шные форумы, когда переносила сюда переписала, а инфу не удалила. Спасибо.
И за тестирование спасибо :)

0

4

А все понятно, отличный скрипт)
Кукисы вещь)

Отредактировано Fover (09.10.2013 19:56:38)

0

5

Доброго времени!
Подскажите, пожалуйста, какой временной промежуток действуют куки на пароль? Можно ли изменить это время? И можно ли сделать так, чтобы при каждом входе в форум требовался пароль?

0

6

sadhaka написал(а):

createCookie('forumpass', entry, 1);

выделенная цифра - количество дней, на которые ставится кука, сейчас как видите на 1.

Валери Рэйн написал(а):

И можно ли сделать так, чтобы при каждом входе в форум требовался пароль?

т.е. убрать запоминание в куках? Будет неприятно, ибо пароль будет требовать после каждой перезагрузки страницы.

0

7

sadhaka написал(а):

выделенная цифра - количество дней, на которые ставится кука, сейчас как видите на 1.

А можно ли сделать так, чтобы куки запоминались по часам, а не по дням?

0

8

Валери Рэйн
можно, замените вот эту часть в скрипте

function createCookie(name,value,hours) {
    if (hours) {
        var date = new Date();
        date.setTime(date.getTime()+(hours*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

после чего тут можете задавать часы

sadhaka написал(а):

createCookie('forumpass', entry, 1);

+1

9

sadhaka
Спасибо!

0

10

Не работает скрипт. Может ли быть дело в том, что к оригинальному адресу форума добавлен "/=&forum" ? (Таким образом делали глав. страницу для форума, может, помните)

Пытались ставить и оригинальный адрес : http://sphoenix.rusff.ru

Для наглядности, ставим вот такой скрипт:

Код:
<script>
var forumlink = 'http://sphoenix.rusff.ru/=&forum';
var forbidden = 2;
var entry = 'ренессанс';
var forumlink = 'http://sphoenix.rusff.ru/=&forum';
var forbidden = 23;
var entry = 'moon';
var forumlink = 'http://sphoenix.rusff.ru/=&forum';
var forbidden = 21;
var entry = 'коралл';
var forumlink = 'http://sphoenix.rusff.ru/=&forum';
var forbidden = 12;
var entry = 'КроваваяМэри';
var forumlink = 'http://sphoenix.rusff.ru/=&forum';
var forbidden = 14;
var entry = 'иллюзия';
var forumlink = 'http://sphoenix.rusff.ru/=&forum';
var forbidden = 16;
var entry = 'небосвод';
var forumlink = 'http://sphoenix.rusff.ru/=&forum';
var forbidden = 15;
var entry = 'тепло';

function createCookie(name,value,hours) {
    if (hours) {
        var date = new Date();
        date.setTime(date.getTime()+(hours*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}
function pass() {
            if (readCookie('forumpass') == entry ) return true;
            else if (prompt('Администратор установил пароль на этот форум', '') == entry) {
                alert('Пароль принят. Нажмите "ОК" для входа');
                createCookie('forumpass', entry, 1);
                location.href = loc;
            }
            else {
                alert('Введенный пароль неверен');
                location.href = forumlink;
            }
        }
        if (location.href.indexOf("viewforum.php?id=" + forbidden) != -1 || (location.href.indexOf("viewtopic.php") != -1  && FORUM.topic.forum_id == forbidden) ) {
            var loc = location.href;
            pass (loc);
}
</script>

Отредактировано Валери Рэйн (24.01.2014 23:14:54)

0

11

Валери Рэйн
Нет, дело в том, что скрипт расчитан на закрытие доступа только для 1 форума, а не для нескольких. К завтра немного перепишу скрипт длятого, чтобы можно было задавать несколько форумов

0

12

sadhaka
Будем Вам очень благодарны! А Вы в этой теме выложите его?

0

13

Валери Рэйн
попробуйте так

<script>
    var forumlink = 'http://sadhaka.rusff.ru';
    var forbidden = {
        //id форума : "пароль"
        3: "entry",
        1: "done"
    }

    function createCookie(name,value,hours) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(hours*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    }
    function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    }
    function getUrlDate() {
        var param = {};
        var getURL = location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(t,key,value) {
            param[key] = value;
        });
    return param;
    }
    function pass(url, id) {
                if (readCookie('forumpass'+id) == forbidden[id] ) return true;
                else { $("body").css("display","none");
                     if (prompt('Администратор установил пароль на этот форум', '') == forbidden[id]) {
                    alert('Пароль принят. Нажмите "ОК" для редиректа');
                    createCookie('forumpass'+id, forbidden[id], 1);
                    location.href = url;
                }
                else {
                    alert('Введенный пароль неверен');
                    location.href = forumlink;
                }
            }}
    if (location.href.indexOf("viewforum.php") != -1) {
        var fID = getUrlDate()["id"]; 
    }
    else if (location.href.indexOf("viewtopic.php") != -1) {
        var fID = FORUM.topic.forum_id;
    }
    if (fID in forbidden) {
        var loc = location.href;
        pass (loc, fID);
    }
    </script>


ставить лучше в хтмл-верх

0

14

sadhaka
Попробовали. Теперь, при вводе правильного пароля, не отправляет в нужный форум... Вот скриншот:
http://i022.radikal.ru/1401/95/3ad8d7171ffet.jpg

А вот скрипт, который мы поставили на форум:

Код:
<!-- пасс -->
<script>
    var forumlink = 'http://sphoenix.rusff.ru/=&forum';
    var forbidden = {
//id форума : "пароль"
        2: "ренессанс",
       23: "шоколадная лягушка",
       21: "коралл",
12: "КроваваяМэри",
14: "иллюзия",
16: "небосвод",
15: "тепло"
    }

    function createCookie(name,value,hours) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(hours*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    }
    function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    }
    function getUrlDate() {
        var param = {};
        var getURL = location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(t,key,value) {
            param[key] = value;
        });
    return param;
    }
    function pass(url, id) {
                if (readCookie('forumpass'+id) == forbidden[id] ) return true;
                else { $("body").css("display","none");
                     if (prompt('Администратор установил пароль на этот форум', '') == forbidden[id]) {
                    alert('Пароль принят. Нажмите "ОК" для редиректа');
                    createCookie('forumpass'+id, forbidden[id], 1);
                    location.href = url;
                }
                else {
                    alert('Введенный пароль неверен');
                    location.href = forumlink;
                }
            }}
    if (location.href.indexOf("viewforum.php") != -1) {
        var fID = getUrlDate()["id"];  
    }
    else if (location.href.indexOf("viewtopic.php") != -1) {
        var fID = FORUM.topic.forum_id;
    }
    if (fID in forbidden) {
        var loc = location.href;
        pass (loc, fID);
    }
    </script>

0

15

Валери Рэйн Замените красное на loc
                   

else { $("body").css("display","none");
                     if (prompt('Администратор установил пароль на этот форум', '') == forbidden[id]) {
                    alert('Пароль принят. Нажмите "ОК" для редиректа');
                    createCookie('forumpass'+id, forbidden[id], 1);
                    location.href = url;
                }
                else {

Отредактировано Deff (25.01.2014 14:44:20)

0

16

Deff
Боюсь, что это не помогло...

0

17

Валери Рэйн
Откройте один из запароленных форумов на чтение гостю

0

18

Deff
Форум "Преподавательская" открыла

0

19

Валери Рэйн
Попробуйте заменить скрипт

Код:
<!-- пасс -->
<script>
(function () {
    var forumlink = 'http://sphoenix.rusff.ru/=&forum';
    var forbidden = {
//id форума : "пароль"
        2: "ренессанс",
       23: "шоколадная лягушка",
       21: "коралл",
12: "КроваваяМэри",
14: "иллюзия",
16: "небосвод",
15: "тепло"
    }

  function setcOOkie(a,b,c) {if(c){var d = new Date();d.setTime(d.getTime()+c*60*60*1000);}if(a && b) document.cookie = a+'='+ encodeURIComponent(b) +(c ? '; expires='+d.toUTCString() : '');else return false;}
  function getcOOkie(a) {var b = new RegExp(a+'=([^;]){1,}');var c = b.exec(document.cookie);if(c) c = c[0].split('=');else return false;return c[1] ? decodeURIComponent(c[1]) : false;}

  var url = document.URL,fID;
  if(url.indexOf('/viewforum.php?id=')!=-1)fID = parseInt(url.split('/viewforum.php?id=')[1]);
  if(url.indexOf('/viewtopic.php?id=')!=-1)fID = parseInt($('link[rel="up"]').attr('href').split('/viewforum.php?id=')[1]);
  
  function pass(id) {
                if (getcOOkie('forumpass'+id) == forbidden[id] ) return true;
                $("body").hide();
                if (prompt('Администратор установил пароль на этот форум', '') == forbidden[id]) {
                    alert('Пароль принят. Нажмите "ОК" для редиректа');
                    setcOOkie('forumpass'+id, forbidden[id], 1);
                    $("body").show(); return true;
                }
                alert('Введенный пароль неверен');
                location.href = forumlink;
  }

   if(forbidden[fID])pass (fID);
}());
</script>

Отредактировано Deff (25.01.2014 21:29:25)

+1

20

Deff
Всё, заработало! Спасибо большое!

0


Вы здесь » Техническая поддержка сервиса Quadro.Boards » Скрипты и дополнения » Доступ в форум по паролю


Рейтинг форумов | Создать форум бесплатно © 2007–2016 «QuadroSystems» LLC