Задать вопрос
  • Насколько актуален чистый PHP?

    php666
    @php666
    PHP-макака
    Отвечу как автор того самого обширного ответа.

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

    Есть ли сейчас смысл в оттачивании чистого PHP
    Язык всегда первичен. Да.

    Далее. Вот эта фраза
    если мне +- хватает понимания, как работает та же Ларавел?
    Ты серьезно думаешь, что у тебя "хватает понимания", как работает фреймворк? Больше не повторяй вслух эти слова. Никогда. Особенно на собеседовании. Иначе собеседующие тебя похоронят за плинтусом.

    Может, при возможности стоит обратить внимание на другой язык(Го, шарп, нода)?
    Сегодня разговаривал с HR-ом, дословно: php-шников и фронтов много. Больше остальных. Спрос на другие языки - go и питон - там низкая конкуренция. Не могу ей не поверить, т.к. php существует более 20 лет и за это время в отрасль вкатилась куча людей. Откровенно говоря, очень скоро значительный % пхп-макак пойдет в такси, включая меня. Конкуренция, судя по собеседованиям - адовая. Спрашивают сам язык и ещё 250 сопутствующих технологий.

    не рискую пока идти на собеседования потому что хочу закрыть чеклист: несколько проектов в портфолио на чистом PHP, laravel; подучить JS с Аяксом; Добить тестирование, а также чуть разобраться с докером, линуксом и теоретической частью этих ваших интернетов.
    мертвому припарка. Ты никогда в "домашних условиях" не получишь боевой опыт. Лучше иди работай за "ничего", больше пользы будет.
    Ответ написан
    1 комментарий
  • Почему нельзя хранить важные данные в localStorage и вообще, JWT чем-то опаснее cookie?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Важные данные обычно никогда не хранятся на клиенте, они передаются, используются и удаляются.

    Есть ли какие-то ситуации, когда использование httpOnly сессионной куки нас защищает, а вот использование localStorage и sessionStorage уязвимо?

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

    Теперь про токены. Токены в теории лучше всего держать не в localStorage, а в sessionStorage. Это хранилище переживает перезагрузки страниц и не расшарено между табами. Т.е. при открытии того же самого адреса в новом табе будет созданая новая сессия. Хранилище очищается при закрытии браузера и таба. Но это жутко неудобно, каждый раз логиниться. Поэтому здравая логика говорит об использовании localStorage, хотя если вы совсем отбитый, то можете хранить токен в сессионой куке.

    Если вы прочли те статьи внимательно, то можно понять, что преимущества сессионных кук нивелируются неудобством их использования.
    JWT Токены предназначены для микросервисной архитектуры. Т.е. у вас есть некоторый центр аутентификации, который выдает вам токен. Токен этот подписан относительно стойкой криптографией и постоянно ротируется.
    Этот токен передается другим микросервисам, которые могут его верифицировать через публичные ключи (JWKS).
    Т.е. если вы хотите, вы можете строить свои сервисы так, что они доверяют не только вашему центру аутентификации, но и гуглу с амазоном через OpenID. Есть ситуации, например когда вы хотите разрешить доступ к сервису сотрудникам другой компании. Например, когда такая компания огромна (десятки тысяч сотрудников). Они аутенфицируются у себя, а вы проверяете, что токен выпущен сервисом данной компании. Это не так сложно реализовать.
    Реализация авторизации лежит на плечах каждого микросервиса и напрямую завязана на бизнес-логику. Как правило это некий внутренний микросервис, который интегрирован c middleware микросервиса.
    Ответ написан
    5 комментариев
  • За что отвечает подключение mysql в .settings.php bitrix?

    no_one_safe
    @no_one_safe
    Bitrix очень старая cms. Часть функционала устарела, но не удаляется по соображениям обратной совместимости. Старый функционал берет подключение из dbconn.php, новый уже из .settings.php
    Но часто старый код взаимодействует с новым. Поэтому подключение указывается в 2х местах. Лет через 10 будет наверное в дном месте, когда все перепишут :)
    Ответ написан
    2 комментария
  • Для чего делают отдельно личный кабинет для физ. лица и юр. лица в интернет магазине?

    @caballero
    Программист
    в большинстве случаев личный кабинет нафигш не нужен

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

    Лично я если меня заставляют регистрироватся просто иду в другой магазин - цены у всех примерно одинаковые
    Ответ написан
    Комментировать
  • Как по клику заменить содержимое во всех div с одинаковым id?

    @rPman
    Найти все элементы div и перебирая каждый запрашивать атрибут id, сравнивая его значение с желаемым.

    То что браузеры позволяют делать несколько элементов с одинаковым id не значит что это правильно. Идентификатор по определению должен быть уникальным.

    Используйте другие атрибуты для этого
    Ответ написан
    Комментировать
  • Вопрос для программистов bitrix: как вы решали проблемы с Cross-Site Scripting?

    initbit
    @initbit Куратор тега 1С-Битрикс
    Безумный план моих идей в руках больных людей
    Вы анализируете кастомный шаблон стороннего разработчика, а не ядро, поэтому вопрос нужно адресовать им.
    Ответ написан
    1 комментарий
  • Как сделать форму на PHP без перезагрузки страницы, не используя AJAX?

    profesor08
    @profesor08 Куратор тега PHP
    Никак.
    Ответ написан
    Комментировать
  • В чем отличия catalog.item и catalog.element и для чего надо их использовать?

    catalog.element - детальная страница товара
    catalog.item - карточка товара в списке товаров, в основном в catalog.section подключается, если не путаю
    Ответ написан
    Комментировать
  • Как изолировать несколько сайтов без Docker?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Запустить один nginx как reverse proxy и каждый сайт в отдельном chroot окружении
    https://www.vennedey.net/resources/3-Secure-webspa...
    Ответ написан
    Комментировать
  • Как изолировать несколько сайтов без Docker?

    Sanes
    @Sanes
    Каждый PHP Pool запускать от отдельного пользователя. Докеру там делать нечего.
    Ответ написан
    Комментировать
  • Как изолировать несколько сайтов без Docker?

    ky0
    @ky0 Куратор тега Системное администрирование
    Миллиардер, филантроп, патологический лгун
    Разнести по каталогам с разными владельцами и настроить разных пользователей у PHP-пулов. Вы, в общем-то, почти всё сами описали :)
    Ответ написан
    Комментировать
  • Кто хорошо знает javascript, элементарный вопрос?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Есть строки, а есть числа. Это не одно и то же и работает по-разному.

    Почитать тут:
    1. Типы данных
    2. про Числа и parseInt()
    3. Преобразование типов


    А если не читать?
    Чтобы не читать, а разбираться с проблемой на месте, можно смотреть, что именно происходит.
    Повсюду навставлять console.log(), через который выводить значения и типы. Или дебаггером в Инструментах разработчика в браузере останавливать в каждой строчке и смотреть в какой переменной что лежит.

    Ключевые вопросы:
    • что возвращает prompt() – какой тип
    • что происходит если к строке прибавить строку "тос" + "тер"
    • что будет если в строке лежит число "2" + "2"
    • чем отличается от деления "2" / "2"

    Поздравляю, вы на верном пути!

    p.s. на чём летаешь? )
    Ответ написан
    4 комментария
  • Как создать табы на vue?

    0xD34F
    @0xD34F Куратор тега Vue.js
    работать с dom напрямую плохая практика

    Не всегда. Зависит от задачи.

    Пусть компонент табов принимает в качестве параметров массив значений, описывающих табы и значение, обозначающее активный таб:

    props: [ 'items', 'value' ],

    В данные компонента положим стили для элемента, изображающего подчёркивание активного таба:

    data: () => ({
      sliderStyles: null,
    }),

    Создадим сами табы и элемент подчёркивания:

    <ul class="tabs">
      <li
        v-for="n in items"
        :key="n.value"
        @click="$emit('input', n.value)"
        class="tabs-item"
      >{{ n.text }}</li>
    </ul>
    <div
      class="tabs-slider"
      :style="sliderStyles"
    ></div>

    Элементу подчёркивания (.tabs-slider) зададим абсолютное позиционирование и transition.

    Настроим слежение за текущим значением - узнаём его индекс среди доступных для выбора значений, записываем в стили элемента подчёркивания позицию и размер таба с соответствующим индексом:

    mounted() {
      this.$watch(
        'value',
        value => {
          const index = this.items.findIndex(n => n.value === value);
          const el = this.$el.querySelectorAll('.tabs-item')[index];
          this.sliderStyles = el
            ? {
                left: `${el.offsetLeft}px`,
                width: `${el.offsetWidth}px`,
              }
            : null;
        },
        {
          immediate: true,
        }
      );
    },

    https://jsfiddle.net/vsr5tLue/
    Ответ написан
    Комментировать
  • Почему виснет сайт?

    cr1gger
    @cr1gger
    Все дороги ведут в Рим — встретимся в Риме!
    У тебя 1 картинка только весит 2мб: https://sto-tonn.com/wp-content/uploads/sto-tonn.jpg
    Открой Network и смотри что грузит долго.

    Так же возможно в JS что-то. Частые ошибки:
    В цикле вешают куча обработчиков, что-то с элементами производят и в большом объёме
    Ответ написан
    1 комментарий
  • Почему виснет сайт?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Комментировать
  • Что значит zero pixel в верстке?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Ответ написан
    Комментировать
  • Что исправить (в чем может быть ошибка) что бы записать данные в куки через API Битрикс?

    initbit
    @initbit Куратор тега 1С-Битрикс
    Безумный план моих идей в руках больных людей
    \Bitrix\Main\Context::getCurrent()->getResponse()->writeHeaders();
    Ответ написан
    8 комментариев
  • Как сделать фильтрацию списка новостей по датам Начало активности и Окончание активности?

    initbit
    @initbit Куратор тега 1С-Битрикс
    Безумный план моих идей в руках больных людей
    Скопируйте шаблон компонента и добавьте в него .parameters.php с нужными вам настройками. Но в этом случае они не будут учитываться в выборке новостей, потому что GetList про них ничего не знает.
    Подробнее почитать можно тут https://ydmitry.ru/blog/4-sposoba-rasshirit-standa...

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

    Проще кастомизировать стандартный компонент под вашу задачу.
    Ответ написан
    2 комментария
  • Почему все чаще пользователи отвечают в комментах к вопросу?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Делаю так тогда, когда не считаю написанное достойным ответа. Иногда вопрос слишком уж элементарен, иногда я больше подтолкнул человека в нужную сторону, чем дал конкретное решение.
    Ответ написан
    Комментировать