Единый форум поддержки

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

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


Вы здесь » Единый форум поддержки » Новые возможности форумов » Запросы по скриптам #11


Запросы по скриптам #11

Сообщений 1141 страница 1160 из 1629

1

Предыдущая тема - Запросы по скриптам[9]

Инструменты для поиска и редактирования стиля (скриптов).

Как с помощью браузера можно определить элемент дизайна.

Каталог скриптов/CSS

Полезные скрипты, необходимые темы для новичков, а также ссылки на сайты рассказывающие что такое НТМЛ и CSS.

Типовые Вопросы (ЧаВо)

Ответы на часто задаваемые вопросы.

Как задавать вопросы! Разница между стилем и скриптом. ( Советы)

Плюс к названию темы еще и Памятка.

Предыдущая часть темы: Запросы по скриптам[10]

+1

1141

Deff
А массовый запрос ников вообще разве работает? Несколько id - да, но ники выдают такую картину.

https://forumupload.ru/uploads/0000/14/1c/34411/t483399.png

+1

1142

Neil Grant написал(а):

А массовый запрос ников вообще разве работает? Несколько id - да, но ники выдают такую картину.

в АPi про users.get.username написано, что работает: https://mybb.ru/forumapi/

0

1143

Дай образец запроса по никам ?

0

1144

Neil Grant
У тебя доступ гостю на поиск дан в настройках группы ? Гость должен видеть ссылку Поиск и Участники в главном меню

Отредактировано Deff (Вт, 10 Май 2022 19:55:26)

0

1145

Deff
Все включено - и общий поиск, и пользователи. Здесь, на forum.mybb, та же самая история.

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

Дай образец запроса по никам ?

Вот чисто /api.php?method=users.get&username= в адресную строку копирую как на скрине.

0

1146

Neil Grant
Ну  в форматке ручного режима не получится...

Нужно отправлять post-запросом!  https://forumstatic.ru/files/0015/c4/3f/45681.js , а не   $.getJSON

+1

1147

Судя по примеру, скрипт должен работать и с одним массивом, но проверяя алертом, он опять ломается на этапе запроса апи. Перед  $.post алерты срабатывают, а ниже уже нет.

setTimeout(function(){
var arr2 = [];

  $('.posts .tcl,#lastblogs .tcl a').map(function () {
        var self = $(this);
        var avtor = $(this).html();

    arr.push([ $(this).html(),$(this)]);
    arr2.push([ $(this).html()]);
  });

var AllnickForApi = arr2.join(',');

  $.post('/api.php',{'method':'users.get','username':AllnickForApi,'fields':'user_id,avatar','limit':'20'},
     function(data){
        var xx = data.response.users;
        for (var i in xx) {
        var val = xx[i];
        var ava = val.avatar;

       var img_On = '';
       if($('li[id="onlinelist"].item5:first').find('a[href$="profile.php?id='+v.user_id+'"]').length){
           img_On = '<span class="isonline"></span>';
        }

        var InfoUs ='<em class="user-avatar"><img src="'+ava+'" class="avatar-image">'+img_On+'</em>';
        $(self).html(InfoUs);
       }
     },'json');
   

}, 500);

А если с двумя массивами, видимо, должно выходить что-то следующее.

setTimeout(function(){
  var arr = []; var arr2 = [];

  $('.posts .tcl,#lastblogs .tcl a').each(function () {
        var self = $(this);
        var avtor = $(this).html();

    arr.push([avtor,self]);
    arr2.push([avtor]);
  });

//var AllnickForApi = arr2.join(',');

  $.post('/api.php',{'method':'users.get','username':AllnickForApi,'fields':'user_id,avatar','limit':'20'},
     function(data){
        var xx = data.response.users;
        for (var key in xx) {
        var val = xx[key];
        var ava = val.avatar;

        arr[i].push(ava);
        }
   },'json');

    $('self').map(function () {
        for (var i in arr) {

        var InfoUs ='<em class="user-avatar"><img src="'+arr[i][1}+'" class="avatar-image"></em>';
        $(self).html(InfoUs);
         
      }
    })
}, 500);

Отредактировано Neil Grant (Ср, 11 Май 2022 21:04:08)

0

1148

Neil Grant написал(а):

Перед  $.post алерты срабатывают, а ниже уже нет.

Ну блин! Запрос ассинхронный! Действия нужно делать внутри запроса в конце
Можно из запроса вызвать функцию обработки, если тьву внутри запроса много текста третирует

$(function() {
    var arr = [];
    var arr2 = [];
    $('.posts .tcl,#lastblogs .tcl a').each(function() {
        var self = $(this);
        var avtor = $(this).html();
        arr.push([avtor, self]);
        arr2.push([avtor]);
    });

    /*Запрос*/
    $.post('/api.php', {
            'method': 'users.get',
            'username': AllnickForApi,
            'fields': 'user_id,avatar',
            'limit': '20'
        },
        function(data) {
            var xx = data.response.users;
            for (var key in xx) {
                var val = xx[key];
                var ava = val.avatar;
                arr[i].push(ava);
            }
            return Done(arr);
        }, 'json');

    /*Обработка*/
    function Done(arr) {   alert(arr); //Cмотрим
        $('self').map(function() {
            for (var i in arr) {
                var InfoUs ='<em class="user-avatar"><img src="'+arr[i][1}+'" class="avatar-image"></em>';
                $(self).html(InfoUs);
            }
        })
    }

});

Отредактировано Deff (Ср, 11 Май 2022 21:35:36)

0

1149

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

setTimeout(function(){

    $(function() {
        var arr = [];
        var arr2 = [];
        $('.posts .tcl,#lastblogs .tcl a').each(function() {
            var self = $(this);
            var avtor = $(this).html();
            arr.push([avtor, self]);
            arr2.push([avtor]);
        });

   var AllnickForApi = arr2.join(',');

        /*Запрос*/
        $.post('/api.php', {
                'method': 'users.get',
                'username': AllnickForApi,
                'fields': 'user_id,avatar',
                'limit': '20'
            },
            function(data) {
                var xx = data.response.users;
                for (var key in xx) {
                    var val = xx[key];
                    var ava = val.avatar;
                    arr[i].push(ava);

       var Online = '';
       if($('li[id="onlinelist"].item5:first').find('a[href$="profile.php?id='+val.user_id+'"]').length){
           Online = '<span class="isonline"></span>';
        }

                }
                return Done(arr);
            }, 'json');

        /*Обработка*/
        function Done(arr) {   alert(arr); //Cмотрим
            $(self).map(function() {
                for (var i in arr) {
                    var InfoUs ='<em class="user-avatar"><img src="'+arr[i][1]+'" class="avatar-image">'+Online+'</em>';
                    $(self).html(InfoUs);
                }
            })
        }

    });

}, 500);

Отредактировано Neil Grant (Чт, 12 Май 2022 00:41:24)

0

1150

Добрый всем вечер!  :flag:

Заранее прошу пардону, возможно вопрос уже был освещен, но мои поиски на форуме не увенчались успехом.  :tomato:

Собственно вопрос. Как несложно поставить на форум предупреждение "18+"? Чтоб были две кнопки "Да" и "Нет", где кнопка "Да" разрешает доступ к форуму, а кнопка "Нет" выкидывает на какой-нибудь сайт с детскими мультиками.

PS Я очень далек от программирования, поэтому буду рад любым советам на понятном человеческом языке.  :|

Отредактировано gugnololmo (Чт, 12 Май 2022 07:58:32)

0

1151

gugnololmo
А смысл такого вопроса? Вы же никак не проверите кто нажимает на кнопку "да". Достаточно просто предупреждения на главной странице форума, которое будет висеть постоянно. ИМХО

+1

1152

Neil Grant
алерт - срабатывает ? Массив Авиков выдаёт ?

Про блоги - я не разбирался... Ващет полная загрузка страницы форума порядка 750ms, поставьте для начала пару секунд
Потом имхо чот я не пойму у Вас с селекторами наколдовано... откуда берётся переменная   в начале функции Done
  $(self) ? она нигде не определена!
Я же вам предлагал брать селекторы(объекты) из сохраненного в arr2

Думаю, если подсмотреть скрипт блогов, можно добавить туда  функцию завершения, по которой и запускать скрипт подстановки авиков

Отредактировано Deff (Чт, 12 Май 2022 08:59:58)

+1

1153

Deff
Алерт работает только до запроса, как и ранее, дальше - глухо. Время пробовалось разное - и полторы, и две с половиной секунды. Предыдущий скрипт, который подбирает по одной аве, работал с 300мс.
Селф есть в самом начале - var self = $(this). Установка вместо него ('.posts .tcl,#lastblogs .tcl a' ) ничего не дает.
В arr2 лежат только ники - arr2.push([avtor]). Ники с селекторами это arr - arr.push([avtor, self]), arr[i].push(ava). В нем же происходит перебор  for (var i in arr).
На счет селекторов не знаю, я как раз выложил последний код, чтобы вы проверили, чего я там накрутил. :D

Отредактировано Neil Grant (Пн, 16 Май 2022 05:02:04)

0

1154

Neil Grant написал(а):

var self = $(this).

Нет у тебя  self ! Оно определенно внутри функции!
Вот так наверно надо:

setTimeout(function(){
    $(function() {
        var arr = [];
        var arr2 = [];
        $('.posts .tcl,#lastblogs .tcl a').each(function() {
            var self = $(this);
            var avtor = $(this).html();
            arr2.push([avtor, self]);
            arr.push([avtor]);
        });
   var AllnickForApi = arr.join(',');
        /*Запрос*/
        $.post('/api.php', {
                'method': 'users.get',
                'username': AllnickForApi,
                'fields': 'user_id,avatar',
                'limit': '20'
            },
            function(data) {
                var xx = data.response.users;
                for (var key in xx) {
                    var val = xx[key];
                    var ava = val.avatar;
       var Online = '';
       if($('li[id="onlinelist"].item5:first').find('a[href$="profile.php?id='+val.user_id+'"]').length){
           Online = '<span class="isonline"></span>';
           arr[i].push([ava,Online]);
        }
                }
                return Done(arr);
            }, 'json');
           
           
        /*Обработка*/
        function Done(arr) {   alert(arr); //Cмотрим
            for (var j=0;j<arr2.length;j++) {
                    var InfoUs ='<em class="user-avatar"><img src="'+arr[j][0]+'" class="avatar-image">'+arr[j][1]+'</em>'; // ибо!)
                    arr2[j][0].prepend(InfoUs);
            }
        }
    });
}, 500);

Отредактировано Deff (Пт, 13 Май 2022 10:10:58)

+1

1155

Mirra Bell написал(а):

gugnololmo
А смысл такого вопроса? Вы же никак не проверите кто нажимает на кнопку "да". Достаточно просто предупреждения на главной странице форума, которое будет висеть постоянно. ИМХО

Очень мудрое замечание. Тогда можно вывести такую табличку

Данный сайт содержит материалы для взрослых, которые неприемлемы для несовершеннолетних. Оставаясь на сайте, Вы тем самым подтверждаете, что Вам уже исполнилось 18 лет.
Для входа решите пример 14-(21/5*10-12)

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

+1

1156

gugnololmo
В HTML верх:

<!-- Реши пример -->
<script>
if(GroupID==3)(function(){function cntDate() {/*==123==;

14-(21/5*10-12) = xx
14-(21/5*10-12) = xx
14-(21/5*10-12) = xx
14-(21/5*10-12) = xx
14-(21/5*10-12) = xx
14-(21/5*10-12) = xx
14-(21/5*10-12) = xx
14-(21/5*10-12) = xx
14-(21/5*10-12) = xx
14-(21/5*10-12) = xx
14-(21/5*10-12) = xx
14-(21/5*10-12) = xx
14-(21/5*10-12) = xx
14-(21/5*10-12) = xx
14-(21/5*10-12) = xx
14-(21/5*10-12) = xx

==123==;*/} cntDate = cntDate.toString().split('==123==;')[1].trim().split('\n');
var array = [];

for (var i = 0; i < cntDate.length; i++) {
    var a = cntDate[i].split(/\s+=\s+/);
    if (a.length !== 2)continue;
    array.push([a[0].trim(),+a[1].trim()]);
}

var d = +new Date()/(20*1000);
var Compare = array[parseInt(d)%array.length];

if (!$getCookie("XXX-XX")) {
var zz  = prompt('Данный сайт содержит материалы для взрослых, которые неприемлемы для несовершеннолетних. Оставаясь на сайте, Вы тем самым подтверждаете, что Вам уже исполнилось 18 лет.\n\nДля входа решите пример:\n'+ Compare[0]+ ' = ?', '');
if(+zz===Compare[1])$setCookie("XXX-XX", 1, 24 * 60 * 60 * 1000);
else location.href = "http://mega-mult.ru/disney/alladin/83-multfilm-1.html";
}
}())
</script>

Красные образцы меняем на свои, вместо хх - реальный ответ...  ответ должен быть целым числом! (подбирайте такие примеры)  Ну и их число не менее десятка чтобы повторяемость была не слишком частой

Отредактировано Deff (Пт, 13 Май 2022 18:40:02)

+2

1157

Deff, огромное человеческое спасибо!

Вы просто волшебник! Албус Дамблдор!! Гэндальф!!! Все работает!

Как вы и посоветовали, вставил Вашу программу в окно "HTML верх". При этом позволил себе внесни некоторые изменения:
1) для проверки сократил количество примеров с 16 до 4,
2) заменил ссылку с мультфильмами.

Получилось так

Код:
    <!-- Реши пример -->
    <script>
    if(GroupID==3)(function(){function cntDate() {/*==123==;

    14-(21/5*10-12) = −16
    19-(3/12*24-12) = 25
    14-(-12*(3/9)+1) = 17
    -8-(-36*(3/9)+4) = 0
    
    ==123==;*/} cntDate = cntDate.toString().split('==123==;')[1].trim().split('\n');
    var array = [];

    for (var i = 0; i < cntDate.length; i++) {
        var a = cntDate[i].split(/\s+=\s+/);
        if (a.length !== 2)continue;
        array.push([a[0].trim(),+a[1].trim()]);
    }

    var d = +new Date()/(20*1000);
    var Compare = array[parseInt(d)%array.length];

    if (!$getCookie("XXX-XX")) {
    var zz  = prompt('Данный сайт содержит материалы для взрослых, которые неприемлемы для несовершеннолетних. Оставаясь на сайте, Вы тем самым подтверждаете, что Вам уже исполнилось 18 лет.\n\nДля входа решите пример:\n'+ Compare[0]+ ' = ?', '');
    if(+zz===Compare[1])$setCookie("XXX-XX", 1, 24 * 60 * 60 * 1000);
    else location.href = "https://www.youtube.com/channel/UCexc-emEni9lvU5jbTqLEkw";
    }
    }())
    </script>

Теперь планирую нарастить базу данных арифметических примеров до 200-300 штук. Кстати, какие ограничения на количество строк в Вашей программе?

Отредактировано gugnololmo (Пт, 13 Май 2022 21:22:13)

0

1158

gugnololmo
Там не база данных, а массив. ) Дело не в количестве элементов массива, а в том, что всё поле "HTML верх" может быть размером не более 64Кб. При таком количестве примеров вам придётся выводить этот скрипт в отдельный файл.

Отредактировано Mirra Bell (Пт, 13 Май 2022 21:25:37)

+1

1159

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

Deff, огромное человеческое спасибо!

Вы просто волшебник! Албус Дамблдор!! Гэндальф!!! Все работает!

Как вы и посоветовали, вставил Вашу программу в окно "HTML верх". При этом позволил себе внесни некоторые изменения:
1) для проверки сократил количество примеров с 16 до 4,
2) заменил ссылку с мультфильмами.

Получилось так

Код:
    <!-- Реши пример -->
    <script>
    if(GroupID==3)(function(){function cntDate() {/*==123==;
 
    14-(21/5*10-12) = −16
    19-(3/12*24-12) = 25
    14-(-12*(3/9)+1) = 17
    -8-(-36*(3/9)+4) = 0
    
    ==123==;*/} cntDate = cntDate.toString().split('==123==;')[1].trim().split('\n');
    var array = [];
 
    for (var i = 0; i < cntDate.length; i++) {
        var a = cntDate[i].split(/\s+=\s+/);
        if (a.length !== 2)continue;
        array.push([a[0].trim(),+a[1].trim()]);
    }
 
    var d = +new Date()/(20*1000);
    var Compare = array[parseInt(d)%array.length];
 
    if (!$getCookie("XXX-XX")) {
    var zz  = prompt('Данный сайт содержит материалы для взрослых, которые неприемлемы для несовершеннолетних. Оставаясь на сайте, Вы тем самым подтверждаете, что Вам уже исполнилось 18 лет.\n\nДля входа решите пример:\n'+ Compare[0]+ ' = ?', '');
    if(+zz===Compare[1])$setCookie("XXX-XX", 1, 24 * 60 * 60 * 1000);
    else location.href = "https://www.youtube.com/channel/UCexc-emEni9lvU5jbTqLEkw";
    }
    }())
    </script>

Теперь планирую нарастить базу данных арифметических примеров до 200-300 штук. Кстати, какие ограничения на количество строк в Вашей программе?

Потестировал, 2 раза окно появилось, на 3 раз нажал "Отмена", на форум зашел спокойно без капчи с примером... Как то так вот...

+1

1160

gugnololmo
Вот такой вот скрипт есть, правда без решения примеров:
в HTML низ
https://forumupload.ru/uploads/0000/14/1c/32894/t576607.png

Код:
<!--  В HTML низ //Уведомление о содержании в указанных форумах -->
<script type="text/javascript">
(function(){
/* Уведомление в указанных форумах */
  var UwedomForumId = {
    //ID форума на главной  //"Текст Уведомления";
    2:   'Вы собираетесь перейти в тему, содержащую материалы, которые относятся к категории "Для взрослых". Переход приостановлен, Вам должно быть не менее 18 лет. Введите Ваш возраст:', 
    3:   'Вы собираетесь перейти в тему, содержащую материалы, которые относятся к категории "Для взрослых". Переход приостановлен, Вам должно быть не менее 18 лет. Введите Ваш возраст:', 
    21:  'Вы собираетесь перейти в тему, содержащую материалы, которые относятся к категории "Для взрослых". Переход приостановлен, Вам должно быть не менее 18 лет. Введите Ваш возраст:', 
    33:  'Вы собираетесь перейти в тему, содержащую материалы, которые относятся к категории "Для взрослых". Переход приостановлен, Вам должно быть не менее 18 лет. Введите Ваш возраст:', 
    39:  'Вы собираетесь перейти в тему, содержащую материалы, которые относятся к категории "Для взрослых". Переход приостановлен, Вам должно быть не менее 18 лет. Введите Ваш возраст:', 
    40:  'Вы собираетесь перейти в тему, содержащую материалы, которые относятся к категории "Для взрослых". Переход приостановлен, Вам должно быть не менее 18 лет. Введите Ваш возраст:'  //Последний элемент без запятой!
  }
 
  var a = $('head>link[rel="up"]'),b,c = $('#pun-viewforum').length, storag = window.localStorage, idF;
  if(a.length)b = UwedomForumId[idF=a[0].href.split('/viewforum.php?id=')[1]];
  if(c)b = UwedomForumId[idF=document.URL.split(/\/viewforum\.php\?id=|&p=|#/)[1]];
  if(typeof b=='undefined')return false;
  if(typeof storag["setOtwetheno"]=='undefined')storag["setOtwetheno"]="";
  var arrSetOtwetheno = storag["setOtwetheno"].split(',')
  if($.inArray(idF,arrSetOtwetheno)!=-1) return false;
  else {
    if (parseInt(prompt(b,''))>=18){storag["setOtwetheno"] = arrSetOtwetheno.join(',')+idF+',';return;} 
    else location.replace('/');
  }
}());
</script>

+1


Вы здесь » Единый форум поддержки » Новые возможности форумов » Запросы по скриптам #11