Forwarded from Библиотека собеса по PHP | вопросы с собеседований
Какова разница между «регулярным выражением» и «выражением с подстановочными символами» в PHP, и как их использовать?
В PHP «регулярные выражения» и «выражения с подстановочными символами» служат похожим целям, но имеют некоторые различия в синтаксисе и функциональности.
Регулярные выражения:
Регулярные выражения (regex) — это мощные инструменты для поиска шаблонов и манипуляции текстом.
Они позволяют определять сложные шаблоны поиска с использованием формального синтаксиса.
Шаблоны regex могут соответствовать определенным символам, диапазонам символов, повторениям, альтернативам и т. д.
PHP предоставляет встроенные функции, такие как
Регулярные выражения более гибкие и универсальные по сравнению с выражениями с подстановочными символами.
Выражения с подстановочными символами:
Выражения с подстановочными символами проще и более ограниченные по сравнению с регулярными выражениями.
Они используют специальные символы, такие как * (соответствует нулю или более символам) и ? (соответствует ровно одному символу), для представления шаблонов.
Выражения с подстановочными символами часто используются при операциях с файловой системой, таких как поиск файлов по их именам.
PHP предоставляет функции, такие как
В PHP «регулярные выражения» и «выражения с подстановочными символами» служат похожим целям, но имеют некоторые различия в синтаксисе и функциональности.
Регулярные выражения:
Регулярные выражения (regex) — это мощные инструменты для поиска шаблонов и манипуляции текстом.
Они позволяют определять сложные шаблоны поиска с использованием формального синтаксиса.
Шаблоны regex могут соответствовать определенным символам, диапазонам символов, повторениям, альтернативам и т. д.
PHP предоставляет встроенные функции, такие как
preg_match()
, preg_match_all()
, preg_replace()
и т. д., для работы с регулярными выражениями.Регулярные выражения более гибкие и универсальные по сравнению с выражениями с подстановочными символами.
Выражения с подстановочными символами:
Выражения с подстановочными символами проще и более ограниченные по сравнению с регулярными выражениями.
Они используют специальные символы, такие как * (соответствует нулю или более символам) и ? (соответствует ровно одному символу), для представления шаблонов.
Выражения с подстановочными символами часто используются при операциях с файловой системой, таких как поиск файлов по их именам.
PHP предоставляет функции, такие как
glob()
, для работы с выражениями с подстановочными символами при операциях с файловой системой.❤6👍4🤔1
Уязвимость Host Header Injection: Риски и Способы Защиты в Laravel
Host Header Injection — это уязвимость, возникающая, когда веб-приложение доверяет заголовку Host, полученному в HTTP-запросах, без проверки. Это может привести к ряду опасных сценариев:
🔸Перенаправление пользователей на вредоносные сайты.
🔸Подделка ссылок для сброса пароля.
🔸Манипуляции с поведением сервера.
Как это проявляется в приложениях Laravel?
Если Laravel-приложение использует заголовок Host для принятия критически важных решений без проверки, это создает серьезный риск.
В первом примере ссылка для сброса пароля формируется напрямую из заголовка Host. Злоумышленник может отправить запрос с поддельным заголовком.
Как защитить Laravel-приложение от Host Header Injection?
1. Проверка заголовка Host
Вместо использования заголовка Host используйте переменную
2. Ограничение доверенных хостов
Используйте middleware
3. Корректная настройка APP_URL
Убедитесь, что в файле .env указано правильное значение:
Проверка на уязвимость
Для проверки приложения на уязвимость можно использовать бесплатные инструменты для анализа безопасности.
Host Header Injection — это уязвимость, возникающая, когда веб-приложение доверяет заголовку Host, полученному в HTTP-запросах, без проверки. Это может привести к ряду опасных сценариев:
🔸Перенаправление пользователей на вредоносные сайты.
🔸Подделка ссылок для сброса пароля.
🔸Манипуляции с поведением сервера.
Как это проявляется в приложениях Laravel?
Если Laravel-приложение использует заголовок Host для принятия критически важных решений без проверки, это создает серьезный риск.
В первом примере ссылка для сброса пароля формируется напрямую из заголовка Host. Злоумышленник может отправить запрос с поддельным заголовком.
Как защитить Laravel-приложение от Host Header Injection?
1. Проверка заголовка Host
Вместо использования заголовка Host используйте переменную
APP_URL
из файла конфигурации .env
2. Ограничение доверенных хостов
Используйте middleware
trustedproxies
, чтобы разрешить запросы только с доверенных хостов. В файле config/trustedproxy.php
настройте параметр host
3. Корректная настройка APP_URL
Убедитесь, что в файле .env указано правильное значение:
APP_URL=https://yourdomain.com
Проверка на уязвимость
Для проверки приложения на уязвимость можно использовать бесплатные инструменты для анализа безопасности.
👍2😁1
🤖Подключение чата DeepSeek к Алисе
Подробный гайд по интеграции GPT в колонку Алисы с использованием DeepSeek. Внутри — пошаговая настройка PHP-хостинга, секретов и навыков в Яндекс.Диалогах. В результате получаете умного помощника, способного отвечать на вопросы с помощью возможностей GPT.
👉 Читать гайд
Подробный гайд по интеграции GPT в колонку Алисы с использованием DeepSeek. Внутри — пошаговая настройка PHP-хостинга, секретов и навыков в Яндекс.Диалогах. В результате получаете умного помощника, способного отвечать на вопросы с помощью возможностей GPT.
👉 Читать гайд
🔥4🥰2🥱2
📚 ТОП-10 свежих и актуальных книг по PHP для новичков и профессионалов
Когда-то PHP был препроцессором гипертекста, а сейчас стал популярным скриптовым языком общего назначения. Предлагаем вниманию читателей нашу версию десяти лучших актуальных книг для изучения этого языка программирования.
👉Читать далее
Когда-то PHP был препроцессором гипертекста, а сейчас стал популярным скриптовым языком общего назначения. Предлагаем вниманию читателей нашу версию десяти лучших актуальных книг для изучения этого языка программирования.
👉Читать далее
🥱3👍1🌚1
Что выведет код?
Anonymous Quiz
11%
Возникнет ошибка выполнения сценария
3%
null
38%
79
20%
0
28%
53
👍17🥰4🤔1
🛠️ Batch vs Stream Processing: ключевые различия
Batch Processing — обработка данных партиями с последующим выводом финального результата.
Stream Processing — обработка данных в режиме реального времени по мере их поступления.
Подробнее см. на изображении. ⚡️
#инфографика
Batch Processing — обработка данных партиями с последующим выводом финального результата.
Stream Processing — обработка данных в режиме реального времени по мере их поступления.
Подробнее см. на изображении. ⚡️
#инфографика
👍1
Подборка новостей по PHP за неделю:
🔎 Представлен CakePHP 5.1: упорядочены зависимости композитора, lib-ICU уже является неявной зависимостью через intl, проведены незначительные оптимизации за счет удаления избыточных присваиваний, проверок
🔎 Поддержка файлов .env теперь встроена в PhpStorm, что устраняет необходимость хардкодинга этих значений в коде приложения.
🔎 В Laravel 11.38 добавлено правило валидации Fluent Email. Команда Laravel выпустила версию 11.38, в которой появилось правило валидации Fluent Email, возможность получения запроса формы или значения Fluent в виде массива, конвейерный метод
🔎Вышли PHP 8.4.3 и PHP 8.3.16! — Это баг-фикс релизы.
🔎Неделя Symfony #942 (13-19 января 2025 года)
#дайджест
🔎 Представлен CakePHP 5.1: упорядочены зависимости композитора, lib-ICU уже является неявной зависимостью через intl, проведены незначительные оптимизации за счет удаления избыточных присваиваний, проверок
empty()
и isset()
.🔎 Поддержка файлов .env теперь встроена в PhpStorm, что устраняет необходимость хардкодинга этих значений в коде приложения.
🔎 В Laravel 11.38 добавлено правило валидации Fluent Email. Команда Laravel выпустила версию 11.38, в которой появилось правило валидации Fluent Email, возможность получения запроса формы или значения Fluent в виде массива, конвейерный метод
finally()
и многое другое.🔎Вышли PHP 8.4.3 и PHP 8.3.16! — Это баг-фикс релизы.
🔎Неделя Symfony #942 (13-19 января 2025 года)
#дайджест
🔥3
💻Как загрузить больше данных с помощью ajax пагинации при прокрутке в laravel 11
В этой статье показано шаг за шагом, как загрузить больше данных с помощью ajax-пагинации при прокрутке в приложении laravel 11
👉Читать гайд
#туториал
В этой статье показано шаг за шагом, как загрузить больше данных с помощью ajax-пагинации при прокрутке в приложении laravel 11
👉Читать гайд
#туториал
DevScriptSchool.Com
How To Load More Data Using Ajax Pagination On Scroll In Laravel 11 Example | DevScriptSchool.com
In this post, I will show you step by step How to Load More data using ajax pagination on scroll in laravel 11 application.
🥱2👍1
⬆️Загружаемые трейты
Знаете ли вы, что Laravel автоматически загружает трейты, если они реализуют метод
#совет
Знаете ли вы, что Laravel автоматически загружает трейты, если они реализуют метод
boot[TraitName]
? Это позволяет вам легко определить общую логику для событий модели 🚀#совет
🤔9👍1👾1
🗂️Библиотека: разделение базового файла PHPStan
Пакет предназначен для разделения базового файла PHPStan на несколько файлов, каждый из которых соответствует определенному идентификатору ошибки. Это позволяет более эффективно управлять и анализировать ошибки в вашем проекте.
Основные возможности:
🔸Разделение базового файла: Пакет разбивает общий файл
🔸Поддержка форматов: Поддерживаются как форматы
🔗 GitHub
#инструменты
Пакет предназначен для разделения базового файла PHPStan на несколько файлов, каждый из которых соответствует определенному идентификатору ошибки. Это позволяет более эффективно управлять и анализировать ошибки в вашем проекте.
Основные возможности:
🔸Разделение базового файла: Пакет разбивает общий файл
phpstan-baseline.neon
на отдельные файлы в директории baselines/
, где каждый файл соответствует конкретному идентификатору ошибки.🔸Поддержка форматов: Поддерживаются как форматы
neon
, так и php
для базовых файлов.🔗 GitHub
#инструменты
👍3
SOAP vs REST. В чем разница?
1. Принцип взаимодействия:
SOAP (Simple Object Access Protocol): Использует протокол XML для обмена сообщениями. Обычно отправляет запросы через HTTP, SMTP или другие протоколы.
REST (Representational State Transfer): Основан на простых HTTP методах (GET, POST, PUT, DELETE) и работает с ресурсами (например, URL). Возвращает данные в форматах JSON, XML или других текстовых форматах.
2. Простота и гибкость:
SOAP: Более сложный и тяжеловесный стандарт, предоставляющий много возможностей, но требует больше ресурсов и времени для разработки.
REST: Простой и гибкий, позволяет использовать различные форматы данных и не накладывает строгих правил на структуру сообщений.
3. Формат данных:
SOAP: Обычно использует XML для обмена данными, что может привести к большому объему сообщений из-за тегов и атрибутов XML.
REST: Часто использует JSON для передачи данных, что более компактно и легче читать для человека.
4. Состояние (Statelessness):
SOAP: Может поддерживать состояние сессии между запросами, что означает, что сервер должен помнить состояние клиента.
REST: Считается безсостоятельным (stateless), каждый запрос от клиента содержит всю необходимую информацию, и сервер не хранит состояние между запросами.
5. Безопасность:
SOAP: Предоставляет стандартизированные механизмы безопасности, такие как WS-Security, что делает его более подходящим для более критичных по безопасности приложений.
REST: Основывается на протоколе HTTPS для обеспечения безопасности передачи данных, но может потребовать дополнительных мер безопасности, таких как токены авторизации.
6. Кэширование:
SOAP: Поддерживает кэширование, но требует сложной настройки на стороне клиента и сервера.
REST: Имеет встроенную поддержку кэширования через HTTP методы, что упрощает процесс.
7. Использование веб-стандартов:
SOAP: Использует стандарты WSDL (Web Services Description Language) и UDDI (Universal Description, Discovery, and Integration) для описания веб-сервисов и их местоположения.
REST: Не имеет формальных стандартов описания интерфейсов, но использует стандарты HTTP и URI для доступа к ресурсам.
Эти различия имеют важное значение при выборе между SOAP и REST в зависимости от требований проекта. SOAP часто используется в корпоративных приложениях, требующих высокой надежности и безопасности, в то время как REST чаще используется в открытых API и веб-приложениях, где важна гибкость и простота использования.
#вопросы_с_собеседований
1. Принцип взаимодействия:
SOAP (Simple Object Access Protocol): Использует протокол XML для обмена сообщениями. Обычно отправляет запросы через HTTP, SMTP или другие протоколы.
REST (Representational State Transfer): Основан на простых HTTP методах (GET, POST, PUT, DELETE) и работает с ресурсами (например, URL). Возвращает данные в форматах JSON, XML или других текстовых форматах.
2. Простота и гибкость:
SOAP: Более сложный и тяжеловесный стандарт, предоставляющий много возможностей, но требует больше ресурсов и времени для разработки.
REST: Простой и гибкий, позволяет использовать различные форматы данных и не накладывает строгих правил на структуру сообщений.
3. Формат данных:
SOAP: Обычно использует XML для обмена данными, что может привести к большому объему сообщений из-за тегов и атрибутов XML.
REST: Часто использует JSON для передачи данных, что более компактно и легче читать для человека.
4. Состояние (Statelessness):
SOAP: Может поддерживать состояние сессии между запросами, что означает, что сервер должен помнить состояние клиента.
REST: Считается безсостоятельным (stateless), каждый запрос от клиента содержит всю необходимую информацию, и сервер не хранит состояние между запросами.
5. Безопасность:
SOAP: Предоставляет стандартизированные механизмы безопасности, такие как WS-Security, что делает его более подходящим для более критичных по безопасности приложений.
REST: Основывается на протоколе HTTPS для обеспечения безопасности передачи данных, но может потребовать дополнительных мер безопасности, таких как токены авторизации.
6. Кэширование:
SOAP: Поддерживает кэширование, но требует сложной настройки на стороне клиента и сервера.
REST: Имеет встроенную поддержку кэширования через HTTP методы, что упрощает процесс.
7. Использование веб-стандартов:
SOAP: Использует стандарты WSDL (Web Services Description Language) и UDDI (Universal Description, Discovery, and Integration) для описания веб-сервисов и их местоположения.
REST: Не имеет формальных стандартов описания интерфейсов, но использует стандарты HTTP и URI для доступа к ресурсам.
Эти различия имеют важное значение при выборе между SOAP и REST в зависимости от требований проекта. SOAP часто используется в корпоративных приложениях, требующих высокой надежности и безопасности, в то время как REST чаще используется в открытых API и веб-приложениях, где важна гибкость и простота использования.
#вопросы_с_собеседований
👍4❤2😁1
💊Советы по оптимизации памяти в PHP
Оптимизация использования памяти в PHP очень важна для создания эффективных и масштабируемых приложений.
В статье содержатся несколько ключевых советов по оптимизации использования памяти в PHP.
🔗Medium
Оптимизация использования памяти в PHP очень важна для создания эффективных и масштабируемых приложений.
В статье содержатся несколько ключевых советов по оптимизации использования памяти в PHP.
🔗Medium
👍3😢2
🔗Реализация паттерна Chain of Responsibility на примере котиков в PHP
Если вы когда‑нибудь пытались настроить бизнес‑логику в своём проекте так, чтобы она не выглядела как свалка
Сегодня вы узнаете один из самых приятных паттернов — Chain of Responsibility, или «Цепочка обязанностей».
👉Хабр
Если вы когда‑нибудь пытались настроить бизнес‑логику в своём проекте так, чтобы она не выглядела как свалка
if-else
и работала хорошо, то этот материал для вас.Сегодня вы узнаете один из самых приятных паттернов — Chain of Responsibility, или «Цепочка обязанностей».
👉Хабр
🔥17😢2
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
❤2😁1
💻Seeder vs Factory: Наполнение тестовых данных в Laravel
В Laravel для работы с данными в процессе разработки и тестирования используются два удобных инструмента — сидеры и фабрики. Каждый из них помогает заполнять базу данных, создавая подходящую среду для работы и проверки приложений. Разберём, как и когда применять каждый из них, а также почему они отлично дополняют друг друга.
Сидеры: Предопределённые данные для приложения
Сидеры используются для заполнения базы данных фиксированными или полуфиксированными данными, которые являются основой приложения. Это может быть информация о ролях, правах, странах или других справочниках. Например, в интернет-магазине с помощью сидеров можно:
🔸создать категории товаров, такие как «Электроника», «Одежда» или «Книги»;
🔸настроить роли пользователей, например «Администратор», «Продавец» и «Покупатель».
Применение сидеров обеспечивает согласованность данных и упрощает развертывание приложения в разных средах — локальной, тестовой или боевой.
Фабрики: Генерация динамических данных для тестирования
Фабрики идеально подходят для создания большого объёма случайных данных, которые можно использовать при тестировании и разработке. Например, в блоге фабрики помогут:
🔹создать 500 пользователей с уникальными именами и адресами электронной почты;
🔹сгенерировать 1000 записей с рандомным содержимым.
Фабрики упрощают моделирование реальных сценариев, ускоряя тестирование и позволяя быстро обновлять тестовые данные.
Сочетание сидеров и фабрик
Эти инструменты хорошо работают вместе. Сидеры задают основополагающие данные, такие как категории или роли, а фабрики добавляют реалистичные тестовые данные. Например, в CRM можно использовать:
✅сидеры для создания ролей, категорий и аккаунтов администратора;
✅фабрики для генерации профилей клиентов и историй взаимодействий.
👉Статья с практическими примерами
В Laravel для работы с данными в процессе разработки и тестирования используются два удобных инструмента — сидеры и фабрики. Каждый из них помогает заполнять базу данных, создавая подходящую среду для работы и проверки приложений. Разберём, как и когда применять каждый из них, а также почему они отлично дополняют друг друга.
Сидеры: Предопределённые данные для приложения
Сидеры используются для заполнения базы данных фиксированными или полуфиксированными данными, которые являются основой приложения. Это может быть информация о ролях, правах, странах или других справочниках. Например, в интернет-магазине с помощью сидеров можно:
🔸создать категории товаров, такие как «Электроника», «Одежда» или «Книги»;
🔸настроить роли пользователей, например «Администратор», «Продавец» и «Покупатель».
Применение сидеров обеспечивает согласованность данных и упрощает развертывание приложения в разных средах — локальной, тестовой или боевой.
Фабрики: Генерация динамических данных для тестирования
Фабрики идеально подходят для создания большого объёма случайных данных, которые можно использовать при тестировании и разработке. Например, в блоге фабрики помогут:
🔹создать 500 пользователей с уникальными именами и адресами электронной почты;
🔹сгенерировать 1000 записей с рандомным содержимым.
Фабрики упрощают моделирование реальных сценариев, ускоряя тестирование и позволяя быстро обновлять тестовые данные.
Сочетание сидеров и фабрик
Эти инструменты хорошо работают вместе. Сидеры задают основополагающие данные, такие как категории или роли, а фабрики добавляют реалистичные тестовые данные. Например, в CRM можно использовать:
✅сидеры для создания ролей, категорий и аккаунтов администратора;
✅фабрики для генерации профилей клиентов и историй взаимодействий.
👉Статья с практическими примерами
❤1
👨💻 Что делаете во время кодинга?
👍 — слушаю музыку
❤️ — смотрю видео
👏 — работаю в полной тишине
🤩 — другое (напишу в комментариях)
👍 — слушаю музыку
❤️ — смотрю видео
👏 — работаю в полной тишине
🤩 — другое (напишу в комментариях)
👍94👏71❤10👾3
🛠️regexpbuilderphp — регулярные выражения, понятные человеку
Библиотека упрощает создание и делает их более читаемыми. Она подойдет для разработчиков, которые часто используют регулярки, но сложно ориентируются в их традиционном синтаксисе.
🔗Github
#инструменты
Библиотека упрощает создание и делает их более читаемыми. Она подойдет для разработчиков, которые часто используют регулярки, но сложно ориентируются в их традиционном синтаксисе.
🔗Github
#инструменты
👍12😁8🥱5