Привет! Вероятно, тебе когда-нибудь попадались веб-приложения, построенные на «1С-Битрикс: Управление сайтом», и ты задавался вопросом: как это ломать? Вроде бы прошелся по всем известной методичке, но все равно пусто. На прошлой работе я намучился ломать такие сайты, и вследствие выживания в дикой природе «Битрикса» у меня появились свои векторы атак. Я с тобой ими поделюсь — let’s go!
PHP *
Скриптовый язык общего назначения
Новости
Headless eCommerce на Laravel: Погружение в модульную архитектуру
Привет, Habr! Меня зовут Тальгат Хайруллов, я руководитель команды разработки в компании CS-Cart. В статье расскажу, как мы поверх Laravel реализовали фреймворк для быстрой и гибкой разработки API продукта с модульной архитектурой.
Про модульную архитектуру в монолите написано немало информации, этот подход даёт возможность выстроить явные границы кода, уменьшить связанность, позволяет масштабировать разработку. Но что, если вам нужно одновременно иметь чёткую границу и высокую расширяемость? Представьте, что ваша модель данных может быть сформирована набором из нескольких модулей, и всё это должно гармонично взаимодействовать как на уровне бэкенда, так и на уровне публичного API.
Junior PHP. Ответы на часто задаваемые вопросы на технических собеседованиях
Привет пользователям Хабра!
Тема собеседований и подготовки к ним всегда актуальна. Поэтому я подготовил ответы на часто задаваемые вопросы на технических собесах по PHP на уровень Junior. Сразу скажу, что этот список вопросов я взял с другого ресурса, к которому очень часто обращаются собеседующие, которые не хотят утруждать себя сочинением своих вопросов. Но в целом повторить базу перед предстоящим собеседованием будет никому не лишним.
Защита JPG-файлов от копирования с помощью Exif и IPTC-тегов
Всем привет! На связи Павел Стариков Fullstack-разработчик digital-агентства. Представьте, вы потратили целый день на создание хороших фотографий для статьи на сайте. Выставили свет, поставили «на уши» множество людей, долго работали в «фотошопе». Фотографии получились отличные, вот только спустя год Яндекс внезапно присылает фильтр «малополезный контент», при этом другие статьи, которые своровали нашу картинку – на первых местах по SEO-высокочастотным запросам. Обидно, не правда ли?
Для предотвращения подобных ситуаций поисковые системы обращают внимания на текстовые мета-теги, которые можно записать в каждую фотографию. Основной формат изображений – JPEG имеет сразу несколько механизмов. Как Exif-данные, содержащие сведения об авторе, камере, дате изменения, так и менее известный стандарт IPTC, который хранит данные в двоичном формате.
Истории
MemSess — очередной сервер для работы с сессиями
В этой статье будет рассмотрен самописный сервер для работы с сессиями и пример работы с ним на PHP.
Использование Symfony / PHP (II)
Привет! Я, Андрей, Symfony разработчик - мы делаем сайты. Каждый день мы тратим много ресурсов на администрирование и базовые настройки проектов. В этой статье я продолжаю делиться опытом, как можно адаптировать фреймворк Symfony под свои нужды. Сегодня я расскажу как мы работаем с базой данных и Doctrine. Поехали
Изучение мидлварей в Laravel 11
Выход Laravel 11 намечен на первый квартал 2024-го года, что может произойти уже в следующем месяце.
Я начинаю новый проект, и поскольку дата выхода очень близка, решил взглянуть на то что изменится в новом крупном обновлении. Помню как пол года назад прочитал в Laravel News статью о том, что Http Kernel уходит в небытие, и не придал этому особого значения.
Когда я создал проект с помощью команды laravel new project --dev
, я был очень удивлён тем, насколько уменьшился размер проекта. Было очень удивительно видеть пустую папку config
(можно опубликовать файлы конфигурации при помощи команды php artisan config:publish
)!
И, конечно же, там нет Http Kernel. Итак... как же добавить или изменить мидлвари? До Laravel 11 ядро Http Kernel, располагающееся по пути app/Http/Kernel.php
,было местом хранения всей конфигурации для мидлварей. Также до Laravel 11 не было необходимости трогать руками файл bootstrap/app.php
, если только Вы не использовали фреймворк Lumen. Однако в новой версии его нужно...
Использование Symfony / PHP
Привет! Я, Андрей, Symfony разработчик - мы делаем сайты. Каждый день у нас уходит много ресурсов на администрирование и базовые настройки проектов. В этой статье поделюсь опытом, как можно адаптировать фреймворк Symfony для оптимизации таких затрат, какие настройки мы проводим для обеспечения быстрого функционирования, и как мы взаимодействуем с REST клиентами. Поехали.
Разборка в Шторме
PhpStorm — лучшая IDE. Но не все дефолтные настройки могут подходить. Особенно в новом UI. Что и почему можно поменять? Сейчас расскажу.
Версионная миграция структуры базы данных через PHP атрибуты
Всегда немного раздражало что при написании миграций в Laravel сначала необходимо прописывать поля в классе модели, а затем эти же поля в миграциях. И когда мне понадобилось написать версионирование структуры БД, то решил совместить класс модели и миграции. И сделал я это через атрибуты PHP. Также вместе с миграциями я получил состояние базы данных с мета-информацией которую можно использовать при работе с ней.
Многоуровневое логирование: Руководство по структурированному и последовательному ведению логов
В прошлом месяце мне представилась возможность выступить на AmsterdamPHP с докладом на тему уровней логирования. Полученные положительные отзывы вдохновили меня на то, чтобы поделиться этой информацией для более широкой аудитории, поэтому я решил написать эту статью.
Как и почему в 2024 году мы разрабатываем сайты для крупных клиентов на WordPress?
WordPress — это изначально блоговый движок, который появился в 2003 году во времена расцвета LiveJournal и MySpace. Благодаря большому количеству внутренних шаблонов, он стал идеальным инструментом индивидуального паблишмента, позволял быстро собрать свой блог и начать писать.
С тех пор прошло уже 20 лет, WP сильно изменился и стал мощным инструментом для разработки, в том числе коммерческой.
Как мы внедряли Sentry. Часть 2 — внедрение в разработку
В прошлый раз мы рассматривали внедрение Sentry со стороны эксплуатации: устанавливали на сервер self-hosted
, делали его высокодоступным при помощи сети доставки td-agent
, настраивали мониторинг.
Теперь рассмотрим процесс внедрения Sentry со стороны команды разработки.
Ближайшие события
Обзор LiveWire 3 и Volt
Приветствую всех поклонников Laravel!
Эта статья-обзор новой, уже третьей версии Livewire. Решил сделать эту статью после выпуска на youtube-канале видео обзора Livewire, который понравился аудитории. Ну и заодно также взглянем на новинку - Volt. Думаю, многие из вас ждали этот обзор и особенно обзор Volt.
ч.15 Игровой авторитарный сервер на процессах и его архитектура в картинках — Создание сервера для онлайн ММО игр на PHP
В предыдущей статье я рассказывал об архитектуре приложения , где ее отдельные компоненты могли бы работать параллельно не блокируя выполнения друг друга.
В этой статье я расскажу о причинах , по которым пришлось сменить взаимодействие между потоками на процессы и выделить компоненты в отдельные сервисы.
Бонус - архитектура игрового сервера в картинках.
Выбираем подходящий PHP-фреймворк для проекта
Привет, Хабр. Меня зовут Денис, я backend-разработчик в Пиробайте. Поговорим о самых распространенных PHP-фреймворках и о том, для каких проектов целесообразнее выбрать тот или иной вариант.
Статистику распространения бэкенд-фреймворков на PHP я брал с портала JetBrains, она 2021-2022 года, но ситуация к концу 2023 практически не изменилась — вот статистика лучших PHP-фреймворков от Cloudways.
Самыми популярными были и остаются Laravel и Symfony. После них идет WordPress, но в статье его рассматривать не будем (потому что CMS).
Следующий за ним CodeIgniter пропущу намеренно. Я удивился, но разработчики в интернете до сих пор спорят о том, что лучше — Laravel или CodeIgniter. По сути, это full-stack MVC фреймворк, коих много. Он делает то же, что Laravel или Symfony, только отличается архитектурой и рассчитан на маленькие проекты. Он стар (существует с 2006 года) и тот же Laravel был создан как его альтератива.
Вместо этих 2-х ребят я предлагаю рассмотреть следующие — Laminas (Mezzio) и Slim. Эти фреймворки/микрофреймворки, на мой взгляд, более технологичны на фоне предыдущих и хорошо подходят для решения нетипичных задач.
Создаём графический информер на PHP
Глядя на счётчик посещений mail.ru, или на какой-либо другой информер, вы наверняка задумывались о том, как бы сделать такой самому. Эта статья поможет вам осуществить ваши планы.
О выборе CMS для сайтовых дел, кратенький обзор Processwire
На днях было появилась нужда - создать сайт новостного типа, и недолго думая приступил к поиску того самого чудо движка (CMS, пардон - за терминологию из 90х) который бы осилил задачу с относительной лёгкостью, но и - как понимаете - был бы достаточно поддерживаем (важно!), стабилен и гибок для других возможных задач (заказов) из будущего.
К авангардной тройке (WP, Joomla, Drupal) не приглянулся по N-ным причинам, но, щас не об этом.
В общем, перебрал всевозможные критерии (внушительный список хотелок :)) - гугл + ИИ в помощь смекалке и, перематывая к результату - остановился на чудо инструменте Processwire (далее PW).
Недокументированная возможность в Phpstorm: нативная консоль php -a с автодополнением из IDE
В прошлой статье я уже рассказывал о том, что использовать консоль Xdebug как аналог Python Console в Phpstorm. В комментариях меня спросили, чем не подходит для этого нативная консоль php, которую можно вызвать командой php -a
(Php Interactive Shell). Я тогда ответил, что она не интегрирована с IDE, и у нее нет соответствующих фич, таких как автодополнение. Однако недавно выяснилось, что на самом деле ее можно "интегрировать" с Phpstorm одним хитрым способом...
Пьеса о неудачном запуске предзаказа
Воскресный пост без технических нюансов. Просто история одного дня из жизни команды разработки. Пост для развлечения и поднятия боевого духа перед началом рабочей недели – все решаемо и всегда есть выход из ситуации, главное его найти.
Вклад авторов
-
pronskiy 10649.4 -
SamDark 1519.8 -
AloneCoder 987.8 -
youROCK 823.0 -
AntonShevchuk 815.0 -
spasibo_kep 731.0 -
AlexLeonov 620.0 -
olegbunin 560.0 -
zapimir 559.0 -
alexzfort 558.0