Разработчики, возьмите на заметку: чему нас могут научить хакеры при ревью PHP-кода
Вот на что часто обращают внимание хакеры при ревью PHP-кода —
Этот простой паттерн помогает находить уязвимости типа SQL-инъекция буквально за минуты. Такие конструкции часто встречаются в небезопасных реализациях, особенно без параметризации запросов
Попробуйте сами: поищите это выражение в open-source проектах на GitHub — многие уязвимости видны сразу
Безопасный код — это ваш лучший контрприём
👉 @PHPgx
Вот на что часто обращают внимание хакеры при ревью PHP-кода —
$this->db->queryЭтот простой паттерн помогает находить уязвимости типа SQL-инъекция буквально за минуты. Такие конструкции часто встречаются в небезопасных реализациях, особенно без параметризации запросов
Попробуйте сами: поищите это выражение в open-source проектах на GitHub — многие уязвимости видны сразу
Безопасный код — это ваш лучший контрприём
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍4
Совет по PHP
Функция
Документация: https://php.net/manual/ru/function.parse-url.php
👉 @PHPgx
Функция
parse_url() вернёт части URL, например, имя домена, если указать PHP_URL_HOST.Документация: https://php.net/manual/ru/function.parse-url.php
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤4
Phptop — это простой профилировщик ресурсов PHP, безопасный для использования на продуктивных сайтах. Помогает отслеживать использование CPU и памяти на каждый запрос.
Отличный инструмент для разработчиков, стремящихся оптимизировать свои PHP-приложения.
https://github.com/bearstech/phptop
👉 @PHPgx
Отличный инструмент для разработчиков, стремящихся оптимизировать свои PHP-приложения.
https://github.com/bearstech/phptop
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍4👎1
Совет по Laravel
Нужно сгенерировать защищённые ссылки для скачивания, которые истекают через определённое время?
Используйте
Отлично подходит для платного контента или конфиденциальных документов.
Ссылка на документацию: https://laravel.com/docs/12.x/filesystem#temporary-urls
👉 @PHPgx
Нужно сгенерировать защищённые ссылки для скачивания, которые истекают через определённое время?
Используйте
temporaryUrl(), чтобы создать временный доступ к приватным файлам.Отлично подходит для платного контента или конфиденциальных документов.
Ссылка на документацию: https://laravel.com/docs/12.x/filesystem#temporary-urls
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍11
Нашёл пакет, о котором раньше не знал:
LarsWiegers/laravel-maps
https://github.com/LarsWiegers/laravel-maps
Этот пакет позволяет легко использовать leaflet.js или Google Maps для создания карты в Laravel-проекте
А ты используешь какие-нибудь альтернативы для отображения карты объектов на сайте на Laravel?
👉 @PHPgx
LarsWiegers/laravel-maps
https://github.com/LarsWiegers/laravel-maps
Этот пакет позволяет легко использовать leaflet.js или Google Maps для создания карты в Laravel-проекте
А ты используешь какие-нибудь альтернативы для отображения карты объектов на сайте на Laravel?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍3👀1
Forwarded from IT Portal
Чуть не пропустил, вчера PHP отметил своё 30-летие
8 июня 1995 года, программист родом из Гренландии, Расмус Лердорф, публикует в usenet анонс набора CGI-скриптов, который он назвал PHP Tools
Сегодня PHP обеспечивает работу 74,2% серверной части веба. Далее идут: Ruby — 6,2%, Java — 5,2%, ASP.NET — 5,1% и JavaScript на стороне сервера — 4,5% (по данным W3Techs)
С днём рождения, PHP!😇
@IT_Portal
8 июня 1995 года, программист родом из Гренландии, Расмус Лердорф, публикует в usenet анонс набора CGI-скриптов, который он назвал PHP Tools
Сегодня PHP обеспечивает работу 74,2% серверной части веба. Далее идут: Ruby — 6,2%, Java — 5,2%, ASP.NET — 5,1% и JavaScript на стороне сервера — 4,5% (по данным W3Techs)
С днём рождения, PHP!
@IT_Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤29🎉21🔥5👍2
Прекрати использовать массивы PHP для обработки данных
Создавай свои DTO — классы со свойствами
или используй
Также не забудь про неизменяемость. Убедись, что твои DTO являются immutable (записываются один раз), чтобы можно было быть уверенным, что объект не был где-либо изменён.
Ключевое слово
👉 @PHPgx
Создавай свои DTO — классы со свойствами
или используй
spatie/laravel-dataТакже не забудь про неизменяемость. Убедись, что твои DTO являются immutable (записываются один раз), чтобы можно было быть уверенным, что объект не был где-либо изменён.
Ключевое слово
readonly тебе в этом поможетPlease open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍6😁2
Разработчики на PHP, вы знали о Ticks в PHP?
Вы можете написать небольшой скрипт, чтобы остановить долго выполняющийся код по тайм-ауту — без использования pcntl!
Подходит не везде, но отлично заходит в циклах, плагинах или в песочнице.
https://gist.github.com/MrPunyapal/b3909ab20872bd8e1d39bcaf03f52351
👉 @PHPgx
Вы можете написать небольшой скрипт, чтобы остановить долго выполняющийся код по тайм-ауту — без использования pcntl!
Подходит не везде, но отлично заходит в циклах, плагинах или в песочнице.
https://gist.github.com/MrPunyapal/b3909ab20872bd8e1d39bcaf03f52351
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍5
Это не задокументировано, но в Laravel можно подписаться на событие
Это очень полезно, если нужно реализовать блоклист — например, чтобы не отправлять письма на адреса, которые ранее дали bounce в SES, и таким образом сохранить репутацию отправителя.
Можно изменить email «на лету» и убрать из него адреса, попавшие в блоклист. Если после этого не остаётся ни одного адреса для отправки, достаточно вернуть
👉 @PHPgx
MessageSending и предотвратить отправку письма, если выполняется определённое условие.Это очень полезно, если нужно реализовать блоклист — например, чтобы не отправлять письма на адреса, которые ранее дали bounce в SES, и таким образом сохранить репутацию отправителя.
Можно изменить email «на лету» и убрать из него адреса, попавшие в блоклист. Если после этого не остаётся ни одного адреса для отправки, достаточно вернуть
false — письмо будет тихо отброшено и не уйдётPlease open Telegram to view this post
VIEW IN TELEGRAM
❤10👍7
Совет по Laravel: хватит писать кастомную логику повторных попыток для нестабильных API
Используйте
Ссылка на документацию: https://laravel.com/docs/12.x/http-client#retries
👉 @PHPgx
Используйте
Http::retry() — он автоматически повторяет неудачные запросы с экспоненциальной задержкой между попытками.Ссылка на документацию: https://laravel.com/docs/12.x/http-client#retries
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤5🔥1
strlen() vs mb_strlen(): Почему 71% PHP-разработчиков ошибаютсяВ этой статье разберем, как PHP работает со строками и почему даже простой вызов
strlen() может привести к неожиданным результатам. На примере крайне простой задачи "что выведет
echo strlen('привет!');" посмотрим, что и как влияет на подсчет длины строки, заглянем внутрь реализации strlen() и развенчаем миф о строках как массивах.https://habr.com/ru/articles/919192/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤3
Удобный шпаргалка с самыми полезными константами языка PHP
От DIR до UPLOAD_ERR_NO_FILE — всё аккуратно сгруппировано и готово к версии 8.4
Сохраняйте. Используйте. Делитесь
👉 @PHPgx
От DIR до UPLOAD_ERR_NO_FILE — всё аккуратно сгруппировано и готово к версии 8.4
Сохраняйте. Используйте. Делитесь
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤4🤔2🔥1
Совет по Laravel
Делаешь несколько API-запросов? Не отправляй их по очереди!
Вместо этого используй
Ссылка на документацию: https://laravel.com/docs/12.x/http-client#concurrent-requests
👉 @PHPgx
Делаешь несколько API-запросов? Не отправляй их по очереди!
Вместо этого используй
Http::pool() — он позволяет запускать запросы параллельно и прокачать производительность, выполнив их все одновременно.Ссылка на документацию: https://laravel.com/docs/12.x/http-client#concurrent-requests
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16👍12🔥6
Совет по PHP
Вы можете проверять файлы на синтаксические ошибки без запуска кода — и валидировать весь проект одной командой.
🔹 Быстрая проверка на ошибки
🔹 Валидация проекта в одну строку
Чище код — быстрее разработка
👉 @PHPgx
Вы можете проверять файлы на синтаксические ошибки без запуска кода — и валидировать весь проект одной командой.
Чище код — быстрее разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤8
Очередной годный сайт для прокачки навыков SQL-запросов
На платформе вам предстоит решать задачи, используя базу данных больницы. Задачи разделены по уровням сложности, начиная с простых запросов с SELECT и постепенно переходя к более сложным
Есть подсказки и возможность получить готовый запрос, если застряли👍
👉 @PHPgx
На платформе вам предстоит решать задачи, используя базу данных больницы. Задачи разделены по уровням сложности, начиная с простых запросов с SELECT и постепенно переходя к более сложным
Есть подсказки и возможность получить готовый запрос, если застряли
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤7🔥1🎉1
Как использовать сервисные классы в контроллере Laravel?
А точнее — где их определять или внедрять?
Моё правило:
🔹 Если сервис используется в одном методе контроллера — внедрение в метод
🔹 Если в нескольких методах — внедрение через конструктор с использованием property promotion
👉 @PHPgx
А точнее — где их определять или внедрять?
Моё правило:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤6
PHP-разработчики, пишущие на JavaScript, после того как у них челюсть отвисает от того, что аналогичный функционал не идет из коробки в JS. 🤣
👉 @PHPgx
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁10👍4❤2