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

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Если злоумышленник введет логин и пароль чужого человека сможет ли он авторизоваться?
    Например, если он сделает curl запрос в котором user agent такой же как у жертвы и пароль и логин также такой же как у жертвы, то сможет ли он авторизоваться в чужой аккаунт? Откинем в сторону вопрос как он получил эти данные, трояном или как нибудь еще.
    Ответ написан
    9 комментариев
  • Нужно ли делать условие перед вызовом метода для избежания выделения дополнительной памяти?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Мне нужно аргументировать ответ, но я не знаю как ответить правильно.
    Очень просто: Так как проверка отнимает процессорное время, то экономия все равно будет липовой, вместо памяти потратится ресурс процессора. Сколь ни будь значительной экономии это не даст ни в том, ни в другом случае, точнее экономия будет в случае отсутствия проверки и существования переменной, что будет происходить скорее всего чаще чем несуществование переменной, ну или по крайней мере в каком-то числе случаев, в то время как проверка будет осуществляться всегда.
    Ответ написан
    Комментировать
  • SQL запрос к БД через WordPress в 46 раз дольше чем через phpmyadmin?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых нужно нормально писать запрос, хотя бы для понимания что вы делаете:
    SELECT DISTINCT tt.term_id 
    FROM wp_term_relationships AS tr 
    JOIN wp_term_taxonomy AS tt 
    ON tr.term_taxonomy_id = tt.term_taxonomy_id 
    JOIN wp_terms AS t 
    ON tt.term_id = t.term_id 
    WHERE tr.object_id IN (
       SELECT p.ID 
       FROM wp_posts AS p 
       JOIN wp_term_relationships AS tr 
       ON p.ID = tr.object_id 
       JOIN wp_term_taxonomy AS tt 
       ON tr.term_taxonomy_id = tt.term_taxonomy_id 
       JOIN wp_terms AS t 
       ON tt.term_id = t.term_id 
       WHERE p.post_type = 'product' 
       AND p.post_status = 'publish' 
       AND tt.taxonomy = 'product_cat' 
       AND t.term_id = '2961' 
    ) 
    AND tt.taxonomy LIKE 'pa_%';

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

    Ну и в третьих, запросы без лимита почти всегда будут медленными, так как бд вынуждена перебирать все таблицы перебором. Если же такой запрос необходим по каким то причинам, то стоит посмотреть что же происходит с запросом. Нужно в первую очередь сделать отдельно вложенный запрос, проверить как он работает, оптимизировать, а затем то же самое сделать с внешним. Так же неплохо прогнать эти запросы через explain, посмотреть каких индексов не хватает. Ну и первое на что стоит обратить внимание это tt.taxonomy LIKE 'pa_%', что само по себе затратно, и требует обязательного индекса.
    Ответ написан
    Комментировать
  • Как правильно вывести последнее сообщение в блок слева который будет на картинке?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    SELECT m.*, u.login, i.img
        FROM messages m
        LEFT JOIN users u
        ON m.to_user_id = u.id
        LEFT JOIN image i 
        ON m.to_user_id = i.obj_id 
        WHERE m.date > :lastdate # надо выбирать все что позже уже полученных сообщений
        AND image.obj_type = 'user' 
        AND m.from_user_id = :fid  # айди "от юзера"
        AND m.to_user_id = :tid #айди "к юзеру"
        ORDER BY m.date  # по возрастанию все старше последнего полученного
    Ответ написан
    Комментировать
  • Как построить коллекцию на PHP при заданных ниже условиях?

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

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    <input type="file" name="fileFF[]" multiple="multiple" multiple id="fileFF" class="w100" name="files[]" />
    Два раза указан атрибут name, причем теперь он files[], а в коде проверяется fileFF
    Ответ написан
    2 комментария
  • Как оптимизировать процесс загрузки большего объема данных?

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

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Для принтера существует отдельный медиа запрос, в котором вы пишете все свои хотелки по форматированию листа под печать, в том числе колонтитулы, размер страницы, нумерацию, так же описываете элементы в стандартных единицах печати - cm/pt. Все весьма просто гуглится и на том же хабре вроде даже пару толковых статей было (тыц тыц).
    Ответ написан
    Комментировать
  • Почему не работает ссылка на телеграм в webview?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    Вроде написано же, ERR_UNKNOWN_URL_SCHEME, стоит наверное посмотреть как строится стандартный урл по схеме.
    Хинт: tg:// не стандарт, а в первом урл не хватает именно похожей стандартной части.
    Алсо поможет гугль, https://kinsta.com/knowledgebase/err_unknown_url_s...
    Ответ написан
    Комментировать
  • Что будет, если убрать из URL уникальный id у новости в CMS?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    что скажите?
    Во первых "скажете". Во вторых не понятна суть вопроса, вы описали 2 разных механизма, один использует slug, другой id, к чему относится ваше описание механизмов определения уникальности - не понятно. Где вопрос?
    Ответ написан
    6 комментариев
  • Почему с формы обратной связи на почту хостинга приходит пустое письмо?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Проверить что приходит в $_POST
    2) Не использовать стандартную функцию mail(), так как она слишком плохо дебажится, да и в целом не айс.
    3) Поставить нормальный мэйлер, типа пхпмэйлер/свифтмэйлер.
    Ответ написан
    Комментировать
  • Какой стек использовать для кастомизации магазина на Woocommerce?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Есть магазин на WP

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

    Подскажите пожалуйста куда двигаться: разработать новую тему на php, или взять пустую тему на underscore и написать надстройку на JavaScript? Какой из вариантов дороже? Какой вариант правильнее, если рассматривать с точки зрения на перспективу (возможно дальше будем делать приложение).
    Это вам подскажет только человек, добровольно решивший потратить часть своей жизни на изучение вордпресс как системы. Что касается приложения - то там есть много вариантов, часть из которых вообще никак с сайтом не взаимодействует, так как работает через апи, а часть наоборот - тупо оборачивают существующий сайт в свою имитацию браузера. Так что я бы не стал на этом акцентироваться.
    Ответ написан
    3 комментария
  • Как создать файл для добавления контакта в телефонну книгу правильно?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Э.. страничка в интернете? Делаете линк на телефон активной ссылкой и вот вам добавление в телефонную книгу.
    Ответ написан
  • Функция move_uploaded_file выдает ошибку 0, что делать?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    move_uploaded_file возвращает true или false, никакого нуля она не возвращает. Ищите варнинги в логах, там все написано.
    Ответ написан
    Комментировать
  • Как исправить ошибку PHP curl_error, curl_errno 77?

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

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Хранить html код в столбце поста кажется нецелесообразным по ряду причин:
    Угу, ага...

    Лишняя трата памяти на хранение html тегов
    Ого, а лишние это сколько? Экономия на байтах чаще всего приводит к тратам на вычислительные мощности. Некоторые расчеты чуть ниже.
    Уменьшение производительности (?)
    Производительности чего?

    Стили/компоненты могут изменяться, а код останется прежним
    Стили как раз и нужны для того, чтобы легко конфигурировать визуал, не привязываясь к коду. Код может быть каким угодно, но стилизация через теги пока что лучший вариант, который придумали разработчики.

    Использовать собственные минифицированные теги, благодаря которым определенный парсер будет воссоздавать нужные блоки с помощью компонентов (возможно динамичесих)
    Ага, переизобретаем BBCode, найс... Для понимания проблемы - такие коды придуманы для форумов, с целью ограничить использование хтмл в пользовательском вводе. При этом подходе он худо-бедно оправдан, хотя и требует постобработки при каждом выводе, а это использование регулярок, что как бы совсем не бесплатно. В вашем же случае, источник текста более-менее доверенный, и ограничение в тегах больше мешает чем помогает.
    Что касается экономии на "минифицированных" тегах, ну допустим сэкономите вы 100 байт на тегах, то есть на 1000 постов экономия будет.... ТА-ДАААМ! 0,1 мегабайта! А если экономия 1000 байт на пост, то целый МЕГАБАЙТ можно сэкономить! Похвальная рачительность.

    Хранить каждый элемент поста отдельно в бд со следующим содержанием (element_name, position, content, post_id), используя отношения к родительскому посту, соответственно сохранится структура и рендериться пост будет через соответствующие компоненты в нужном порядке (однако как будет именно рендериться в шаблоне поста пока неизвестно)
    Базовые элементы и так должны храниться отдельно, другой вопрос почему они у вас рендерятся в одном порядке, а в другом месте в другом порядке? Заголовок, короткое описание, текст, главное изображение - отдельные поля, оглавление по сути часть текста, зачем его выносить отдельно - загадка, это же такой же текст, котрый автор волен располагать . Вариант с внешней таблицей по сути приводит нас к выносу части данных в EAV(отличный пример универсализации в ущерб производительности), что как раз будет серьезно напрягать выборки бд, если понадобится делать какие-либо поисково-выборочные манипуляции по этим данным.
    Ответ написан
    6 комментариев
  • Как с помощью смартфона проверить ширину лазерного реза?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    IMG_0954.jpeg
    Ответ написан
    Комментировать
  • Как корректно обработать строку запроса типа catalog/aloe/aaaa, если третий параметр в роутинге не предусмотрен (только /)?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Разбиваю строку на массив, из первого параметра получаю имя контроллера и создаю соответствующий экземпляр. Если нет второго параметра, вызываю действие по умолчанию: на сайте это отобразить каталог, или страницу со сатьями (uri соответственно mysite.com/catalog или mysite.com/articles). Если же есть второй параметр (это название конкретного растения или id статьи), вызываю другое действие и передаю параметр (получается mysite.com/catalog/aloe)
    то что вы реализовали к роутингу имеет такое себе отношение. Роутинг обычно опирается на правила, а увас тупо захардкорен контроллер. Что будете делать если сложность будет чуть выше, и например, добавится язык перед контроллером?

    При запросе вида mysite.com/catalog/aloe/test, т.е. когда через слеш появляется третий параметр, та же страница с уведомлением для пользователя отображается без стилей
    Логично, стили у вас лежат всегда в одной папке, а вы их каждый раз подключаете из разных "путей" в урл, от которых зачем-то высчитываете сколько папок "выше отмотать". Путь должен быть абсолютным.

    Вот логика проверки, буквально, если в массиве получилось больше двух элементов, отобрази страницу ошибки
    Вообще логика должна быть такой, что если больше 2 параметров, то все что дальше помещается в какой-то массив, например $parameters, который можно получить из роутинга, и дальше в зависимости от значений что-то делать. Правильнее все же было бы сделать сопоставление пути с контроллером, экшеном и параметрами, как во взрослых роутерах, но для начала и так сойдет.
    Ответ написан
    1 комментарий
  • Как исправить ошибку?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    rank является зарезервированной функцией мускуля, скорее всего надо обернуть имя поля и имя таблицы в обратные кавычки.
    Ответ написан
    Комментировать