• Почему скрипт отлавливает клик по всей странице?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    document.addEventListener('click',как раз и вешает слушатель клика на ВЕСЬ документ. И по коду, надо давать класс эктив ЛЮБОМУ элементу, который кликнут (event.target.classList.add('active');).
    Ответ написан
    3 комментария
  • Как отправить почту через PHP с использованием SMTP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Желательно без использования сторонних библиотек типа PHP mailer.
    Ничего не мешает вам сделать это самостоятельно, посмотреть спецификацию протокола смтп, установить сокет соединение с нужным смтп сервером на нужном порту, пройти аутентификацию, переслать/получить ключ в случае если сервер требует сертификат, передать сообщение, получить подтверждение и ответ сервера, закрыть соединение. Делов на пару дней.
    Ну, или взять готовую билиотеку, покрытую тестами и использующуюся в миллионах проектов.
    Ответ написан
  • PHPWord. Как добавить строку в уже существующую таблицу с нужными данными?

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

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

    может еще какие-то есть моменты важные,
    Миллиард. Спам, проститутки, мало клиентов, много клиентов, налоговая, хостинг отвалился, приватные данные...
    Ответ написан
    Комментировать
  • Как достать картинку из видео файла при помощи js или php?

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

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Работа с бд - одна из основных задач бэкендера, объяснять как это работает в вашем конкретном фреймворке нет смысла, есть туториалы и документация под конкретный фреймворк. Скорее всего все делается через модели и встроенный в них механизм чтения и записи в бд. Читайте доку.
    Ответ написан
  • Как исправить ошибку запроса кУРЛ?

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

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    очевидно что запрос который вы написали в вопросе отличается от того, который у вас реально выполняется, так как в ошибке явно указана другая строка '&quot), курите код, вы явно где-то косячите по символам.
    Ответ написан
    Комментировать
  • Как запретить доступ к определенному столбцу в таблице?

    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 запросы в БД
    Ох, я уже хочу посмотреть на этот сайт... Так красиво работа с пдо еще нигде не применялась. Форма ничего не требует, а значит можно не заполнять, собсно по этому и запросы пустые. В принципе надо сказать спасибо что пустые, а не с инъекциями...
    Ответ написан
    Комментировать