• Как запретить доступ к определенному столбцу в таблице?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Что за приложение, и почему у вас таблица растет "вширь"?
    1) При проектировании бд, если таблица запланировано растет в ширину, 99,9% что это кривой дизайн бд.
    2) Почему у вас логика доступа выносится на уровень бд, неужели у вас каждый пользователь заходит в бд руками через свой логин?
    3) Опишите задачу нормально, прям очень подозреваю что вы что-то типичное решаете через не то место...
    Ответ написан
    Комментировать
  • На сколько важно возвращать "правдивый" статус ошибки?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    В первом случае это явное 404
    Не надо путать "не найдены данные" (например при поиске на сайте) и "не найдена страница по урл".

    либо не правильно обработать неправильные данные (к примеру в цикл строку засунул, а не массив)... во втором 500.
    Это вообще к статусам не относится, скажем так - это ваш личный косяк как разработчика, и тут 500 выставлять вообще не надо, если это фатал - сервер сам отдаст 500, а если это не критичная фигня, где просто на страничке 1 строка не будет отображаться - это не 500, это руки кривые, просто поправить надо, никаких принудительных 500 не нужно, страница то рабочая.

    Ставьте нормальные статусы для нормальной логики, 404 на отсутствующие роуты/страницы, 401 для действий требующих авторизации, и тд.
    Ответ написан
    Комментировать
  • Какие есть книги по расчёту оборудования под инфраструктуру сайта?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых, в связи с быстроменяющимися технологиями такие книги устаревали бы к моменту выхода, так как верстка и написание их занимала бы больше времени чем время между анонсами нового серверного железа.

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

    В третьих - профиль нагрузки у очень похожих приложений может сильно отличаться, в силу специфики приложения.

    Если для выделения памяти и места на дисках еще могут быть какие-то общие правила, исходя из размера индексов для дб, например, то по процессорам или памяти для самого приложения единственный принцип: больше - лучше.

    Как с этим жить?
    Нагрузочное тестирование на спектре нагрузок, аппроксимация роста нагрузки с ростом операций, расчет от текущего железа вверх согласно предсказанному росту нагрузки. Пока ничего умнее не придумали.
    Ответ написан
    Комментировать
  • Как вывести определённое количество сообщений, а не все и какие параметры требуются добавить для управления функцией?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Очевидно что нужно задать лимит вывода, а по уму не использовать глобальные переменные, а передавать итерируемый массив. Но это если какая-то хотя бы архитектура, в вашем случае лимит добавьте.
    function showThemes(limit=3) {
    ...
       for (let i = 0; i < thread.messages.length; i++) {
          if($i==limit)return;
    ...
    Ответ написан
    Комментировать
  • Как подключить css и js файлы в админку для авторизованных, если они находятся выше public?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    А если я авторизовался - без проблем, можно видеть все подкюченные файлы. Я это имею в виду. Или же, если стили и скрипты не подключенны на странице, а просто находятся в общей папке, то спорсить их нельзя?
    Во первых - если у вас скрипты или стили несут некую угрозу безопасности сайта, то уже что-то пошло не так.
    Во вторых - да, можно использовать серверные скрипты для отдачи контента цсс и жс. Но никто так не делает, это неудобно, непрактично, получаем кучу гемороя на ровном месте и никакого профита.
    Ответ написан
    Комментировать
  • Пытаюсь запросить данные из MySQL через PHP. Где ошибка?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Выводится только "соединение установлено", а так - ничего
    Во первых - включить вывод ошибок, в логи же вы не смотрите...
    Во вторых - куча ошибок, непонятно откуда вообще появившихся. Все плохо.
    $link = mysqli_query($link, "SELECT * FROM 'table-name' WHERE USER_ID = 1620");
    Сам линк зачем-то затирается результатом выполнения запроса, внутри запроса имя таблицы зачем-то в кавычках (либо убрать, либо использовать обратные кавычки), потом вообще повтор и бред -
    $query = "SELECT * FROM 'table-name' WHERE USER_ID = 1620"; //снова кривой запрос, теперь уже в переменной, зачем?
    $result1 = mysqli_query($link, $query) or die(mysqli_error($link)); //Линк тут уже заменен результатом выборки, 
    //так что там не ресурс подключения, но варнинги мы не смотрим, так что пофиг же, да?

    Похоже что код взят из какого-то туториала 15летней давности, и над ним издевался ничего не понимающий вивисектор...
    Ответ написан
    Комментировать
  • Как создать и загрузить файл в JavaScript?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Я хочу загрузить на сайт через input файл
    Что за файл?
    после этого он должен обработаться js
    Что именно обрабатывается?
    и передать переменную в python код.
    Какую переменную, только что вроде о файле говорили?
    В python он кодирует фай.
    Кто такой "он"? И от чего он его кодирует?
    После этого я хочу добавить, полученный файл на сайт с возможностью скачивания.
    Так что за файл такой волшебный?
    Какими способами я могу это сделать?
    Писать много кода. Так работают все программисты. План отличный, можете приступать.

    На самом деле у вас здесь 5 или 6 отдельных вопросов, каждый из которых во первых хреново описан, а во вторых требует отдельного развернутого ответа. Решайте по кускам, сначала первую задачу, потом вторую и так далее. Все вместе никто и никогда не решает.
    Ответ написан
    2 комментария
  • Выводится список сотрудников БД, как по ФИО сотрудника(name), которое пользователь введёт с клавиатуры вернуть данные этого сотрудника из БД?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    execute's second parameter represents a list of the objects to be converted
    cursor.execute(sql, ['Иванов Иван Иванович'])
    Ответ написан
    2 комментария
  • Почему не могу обратится к DOM?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    626bada58d130385883113.jpeg
    Ответ написан
    Комментировать
  • Почему не получается вычислить высоту этих элементов?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    во первых лучше уж clientHeight, так как scrollHeight учитывает высоту контента, а не бокса.
    во вторых - используйте интерсекшн обсервер, он во первых не спамит евентами как скролл, во вторых достаточно предсказуемо работает, как раз работа с пересечениями его фишка.
    Ответ написан
    Комментировать
  • Как вывести наружу переменную из EventListener?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    let будет неглобальной, используйте var
    var indexNum;

    UPD: Я понял, вы конечно тупите, но я наконец понял как вы тупите, ща попробую объяснить для одаренных:
    let indexNum; // нужно получить сюда индекс (тольуо нужно var, а не let)
    // вот тут будет немного сложно, включаем мозг...
        box.forEach((item, index) => { //мы делаем цикл, и набрасываем слушатели(!)
          item.addEventListener('click', () => { //которые могут вообще никогда не случиться, или случиться через час
            indexNum = index; //и ТОЛЬКО ТОГДА в indexNum что-то появится, на текущий момент мы только объяснили 
    //что делать по клику, пока это только команда сделать что-то в случае чего-то, indexNum до тех пор пустой
          });
        });
    // тут indexNum все еще пустой, так как мы не умеем кликать на объекты быстрее чем исполняется код.
    
        mainWrapper.addEventListener('click', () => {
          console.log(indexNum); // выведет предыдущее значение индекса при первом клике
    // но помним, что клика еще нет!
        });
    // и тут клика еще нет
        for (let index = 0; index < 3; index++) {
          console.log(indexNum); // но здесь undefined, а именно здесь индекс и нужен
    // не "но", а здесь клика еще нет, а вы пытаетесь получить его значение.
    //код выполнился, теперь можете кликать, но теперь ваш фор уже вызываться не будет.
        }

    Теперь что надо сделать: Вынести ваш код в функцию, и функцию вызывать внутри евента.
    Ответ написан
    3 комментария
  • Как можно отфильтровать пустые POST запросы?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    у меня есть файл PHP который записывает все входящие POST запросы в БД
    Ох, я уже хочу посмотреть на этот сайт... Так красиво работа с пдо еще нигде не применялась. Форма ничего не требует, а значит можно не заполнять, собсно по этому и запросы пустые. В принципе надо сказать спасибо что пустые, а не с инъекциями...
    Ответ написан
    Комментировать
  • Как выводить информацию о выбранном элементе в теге?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых - есть волшебная штука - консоль, console.log() выдаст вам подробную информацию о любом элементе.

    Во вторых - глупо искать черную кошку в темной комнате, особенно если ее там нет. Это к тому, что чтобы получить валуе, его надо бы в шаблоне как-то прописывать, а то оно есть только у дефолтного опшн.

    В третьих - в цикле задавать один и тот же ид - вообще шедевр, ид должен быть уникальным для элемента на странице. Два одинаковых ид на странице - уже ошибка хтмл разметки.
    Ответ написан
    3 комментария
  • Не отображается Яндекс карта?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Скорее всего так:
    // Создаем карту.
      var myMap = new ymaps.Map...
    
    // Создаем еще одну карту.
      var myMap2 = new ymaps.Map...
    Ответ написан
  • Почему сбрасываются изменения в textContent HTML-разметки после обновления страницы? Как этим управлять?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Как сделать, чтобы то, что я ввел в textarea сохранялось в разметке страницы
    Куки, локалсторэйдж. По сути вы не можете изменить саму страницу через код, так как жс не умеет локально писать на диск без спроса (секюрити, и все вот это). При изменении странички через жс меняется только ее копия в оперативной памяти, сам исходный документ остается неизменным. Но для локального хранения придумали защищенные хранилища данных, котрые хранят текстовое представление каких-то данных (куки и локалсторэйдж).

    навсегда, пока целенаправленно не будет изменено повторно?
    Есть ограничения, во первых на длину данных, во вторых - срок жизни и принудительная очистка куки. Так что "навсегда" звучит слишком монументально, но думаю вам подойдет и просто на длительный срок )
    Ответ написан
    3 комментария
  • Как написать собственную платформу для e-commerce?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Тут уже понаписали... Но я докину...
    что собственно нужно в первую очередь (читать и обязательно знать), и что можно допилить потом:

    1) Нормальная структура бд. 3 нормальная форма, нормализация, денормализация, отношения один-к-одномму, один-ко-многим, многие-ко-многим. В плане SQL - обязательно работу с джоин, груп бай, агрегационные фунции - сум, коунт... В дальнейшем понадобится почитать про индексы, иначе будет тормозное г-но.

    2) Структура кода. Проще всего взять готовый фреймворк типа Express под ноду, но тут еще понадобится читать туториалы и все вот это, зато костылей будет в разы меньше, и оптимизировать код в тысячи раз проще.

    3) Тут скорее даже самое важное, хотя как посмотреть... Короче - визуал, представление. Мой совет - посмотрите все похожее что есть на рынке, выберите самое подходящее вашей конторе и делайте так же или близко к этому. Визуал часто дает толчок в сторону правильной структуры - какие куски объединить общим контроллером, какие объекты будут нужны там или тут... Короче сильно помогает.

    В общем как то так...
    Ответ написан
    2 комментария
  • Почему не работает запрос через jQuery?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Взято с доки fetch, то есть просто прочесть 1 страницу документации, и не надо "перелопатив десятки тредов"...
    fetch('https://nominex.io/api/rest/v1/pairs',{
       headers: {
          'Accept':'*/*'
        }
      }
    )
      .then((response) => {
        return response.json();
      })
      .then((data) => {
        console.log(data);
      });
    Ответ написан
    Комментировать
  • Как отобразить нужное местоположение при обновление страницы в яндекс картах?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    гет параметры, не?
    Ответ написан
    Комментировать
  • Как реализовать добавление товара с количеством в корзину?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Awake, вопрос: Нахрена хранить это в стораже, если все равно лазеете на сервер при каждом чихе. Храните в сессии, или в бд, на сервер отсылайте только прибавить/убавить/удалить. Обратно получайте хтмл корзины, ну или жсон структуру и из нее уже хтмл лепите.

    Если очень хочется хранить в стораже - храните жсон строку под индексом товара, в котором уже цена, количество, от вашего кода нифига не изменится, кроме пары строк.
    будет у вас структура типа
    {
       "1":{
          "id":1,
          "qty":2,
          "price":666
       },
       "2":{
          "id":2,
          "qty":1,
          "price":77
       }
    }
    Ответ написан
    1 комментарий