![Mikhail Bukachuk](/img/default-banner.jpg)
- 78
- 85 800
Mikhail Bukachuk
Finland
Приєднався 6 вер 2013
Всем привет, меня зовут Михаил, я работаю уже более 20 лет PHP разработчиком, в данный момент занимаю лидовую позицию. На данном канале я буду выкладывать видео о PHP, Mysql, Linux, Symfony, Redis, PHPUnit для начинающих и специалистов любого уровня.
Если у вас есть какие то идеи по поводу темы роликов, вы также можете мне написать и возможно я смогу сделать ролик по вашей тематике, конечно это около веб и PHP в целом)
Вы также можете смело писать мне на email или в телеграм канал если у вас есть какие либо вопросы)
Если у вас есть какие то идеи по поводу темы роликов, вы также можете мне написать и возможно я смогу сделать ролик по вашей тематике, конечно это около веб и PHP в целом)
Вы также можете смело писать мне на email или в телеграм канал если у вас есть какие либо вопросы)
Как работают cookie и сессии в PHP
В этом видео подробно разберем механизмы работы COOKIE и SESSION в PHP. Узнаем зачем использовать cookie и сессии. Разберем основные их отличия, а также примеры использования. Использование безопасных флагов для cookie (HttpOnly, Secure). Настройка времени жизни сессий в зависимости от требований безопасности. Сделаем простую форму авторизации пользователя, а также ротацию банеров с помощью COOKIE.
В COOKIE стоит хранить данные, которые безопасно раскрывать пользователю, в SESSION стоит хранить информацию об аутентификации. Сессии не работают отдельно от COOKIE, а являются их дополнением, для обеспечения более безопасного хранения данных пользователя на сервере.
Сессии храняться на сервере, а на клиенте (браузере) хранится только уникальный идентификатор сессии. COOKIE хранятся на стороне клиента, то есть в браузере пользователя.
00:00 Что такое HTTP COOKIE (веб куки)
01:24 Каким образом происходит инициализация данных COOKIE
03:40 Массив $_COOKIE в PHP
04:00 Функция setcookie в PHP для установки данных куки
07:00 Параметры функции setcookie
11:00 Параметр $path в функции setcookie, как работает и что прописывать
12:00 Параметр httpOnly в функции PHP setcookie
14:00 Делаем простейшую ротацию банеров с помощью куки
18:00 Простейшая аутентификация пользователя с помощью COOKIE и проблемы такого подхода
20:00 Делаем аутентификацию c помощью встроенного в PHP механизма сессий
23:00 Устанавливаем время жизни сессии c помощью ini_set
26:00 Уничтожение данных сессии и выход пользователя из системы
#обучение #программирование #php
В COOKIE стоит хранить данные, которые безопасно раскрывать пользователю, в SESSION стоит хранить информацию об аутентификации. Сессии не работают отдельно от COOKIE, а являются их дополнением, для обеспечения более безопасного хранения данных пользователя на сервере.
Сессии храняться на сервере, а на клиенте (браузере) хранится только уникальный идентификатор сессии. COOKIE хранятся на стороне клиента, то есть в браузере пользователя.
00:00 Что такое HTTP COOKIE (веб куки)
01:24 Каким образом происходит инициализация данных COOKIE
03:40 Массив $_COOKIE в PHP
04:00 Функция setcookie в PHP для установки данных куки
07:00 Параметры функции setcookie
11:00 Параметр $path в функции setcookie, как работает и что прописывать
12:00 Параметр httpOnly в функции PHP setcookie
14:00 Делаем простейшую ротацию банеров с помощью куки
18:00 Простейшая аутентификация пользователя с помощью COOKIE и проблемы такого подхода
20:00 Делаем аутентификацию c помощью встроенного в PHP механизма сессий
23:00 Устанавливаем время жизни сессии c помощью ini_set
26:00 Уничтожение данных сессии и выход пользователя из системы
#обучение #программирование #php
Переглядів: 359
Відео
Навигация по файлам в Linux с помощью Midnight commander
Переглядів 356День тому
Midnight Commander (MC) - это мощный текстовый файловый менеджер для Unix-подобных систем, таких как Linux. MC предлагает удобный интерфейс для навигации по файловой системе, копирования, перемещения, удаления файлов и выполнения других операций. В этом видео показано, как эффективно использовать файловый менеджер Midnight Commander (MC) для навигации по файловой системе Linux. Midnight Command...
Аутентификация и авторизация с помощью JWT в Symfony PHP фреймворке
Переглядів 27921 день тому
В этом видео мы переделаем механизм аутентификации и авторизации с помощью JWT в Symfony. Для этого воспользуемся готовым бандлом LexikJWTAuthenticationBundle. Установим данный Symfony bundle. Разберемся с его настройками и опробуем его в работе. 00:00 Что такое JWT токен 01:58 JSON логин в Symfony с помощью сессий для REST API 05:00 Устанавливаем и настраиваем LexikJWTAuthenticationBundle банд...
Как подключиться к серверу Linux по SSH протоколу
Переглядів 221Місяць тому
В этом видео мы разберем момент подключения к серверу Linux по протоколу SSH. Сначала сделаем это из Windows с помощью программы Putty и пароля, далее сгенерируем SSH private и public ключи и научимся ими пользоваться для подключения к серверу без пароля. Потом аналогично проделаем такую же операцию из Linux, если вы хотите подключиться по SSH протоколу с одного компьютера Linux на другой удале...
Логирование в Symfony PHP с помощью Monolog. Подключаем filebeat, elasticsearch и Kibana
Переглядів 435Місяць тому
Видеоурок посвящен настройке и использованию системы логирования в Symfony с помощью Monolog, а также интеграции с инструментами Filebeat, Elasticsearch и Kibana для анализа и визуализации логов. Вот основные шаги и темы, которые могут быть освещены в видео: Введение в логирование с Monolog в Symfony: Обзор Monolog как основной библиотеки для логирования в Symfony. Установка и настройка Monolog...
Делаем простой интернет магазин на PHP без ООП для начинающих
Переглядів 621Місяць тому
*Начинай программировать на PHP с этого видео уже сегодня, в следующем видео можно будет отправить свою работу на проверку мне на почту!* В этом видео сделаем простой интернет магазин на голом языке программирования PHP без ОПП с использованием базы данных mysql. Разберемся с тем, как работает PHP, как работают формы в PHP и как обрабатывать данные формы. Как реализовать простейший фильтр товар...
Как сделать REST API на Symfony в PHP. Полный гайд для разработчиков backend
Переглядів 1 тис.2 місяці тому
В этом видео мы построим учебное приложение реализующее REST API. Для этого мы научимся отдавать данные в JSON. Разберемся с тем как работает компонет Symfony/Serializer. Также обработаем запрос POST с телом запроса в формате JSON. Сначала сделаем это с помощью обычной Symfony/Form формы. Далее попробуем это сделать через специальный Dto объект. Также полученные контроллеры покроем функциональн...
Блог на чистом PHP. Урок 6. Покупаем домен и хостинг и выкладываем сайт в интернет
Переглядів 2502 місяці тому
В этом видео мы подробно рассмотрим простой способ размещения вашего кода в интернете с использованием FTP-клиента и общего хостинг-провайдера. Для этого мы воспользуемся кодом блога на PHP, который мы уже создали в рамках учебного проекта. Кроме того, мы кратко коснемся темы приобретения домена и его привязки к хостингу. Мы также продемонстрируем процесс загрузки файлов по протоколу FTP с помо...
Symfony 6 курс. Урок 15. Создание и удаление связанных сущностей в Doctrine ORM
Переглядів 2552 місяці тому
В этом видео затронем тему видов отношений между сущностями. Объяснение основных типов отношений между сущностями в Doctrine 2: один к одному, один ко многим и многие ко многим. Вы можете установить односторонюю связь, когда отношения прописываются только в одной сущности, также и двустороннюю связь, тогда надо добавить свойство во второй сущности и сделать правильные настройки Doctrine ORM с п...
Собираем свой MVC микрофреймворк на PHP из готовых пакетов в composer
Переглядів 4442 місяці тому
Исходный код можно взять здесь github.com/bukachukcom/framework В этом видео мы соберем из различных компонетов свой микрофреймворк в образовательных целях. Посмотроим MVC приложение с помозью роутинга Symfony, шаблонизатора Twig, DI контейнера PHP-DI. Также возьмем var_dumper для удобства отладки. Doctrine DBAL для удобных запросов в базу данных. В конце видео разберемся с тем, как работает DI...
Symfony 6 курс. Урок 14. Пишем парсер в Symfony/Console и покрываем Unit тестами с mock объектами
Переглядів 4292 місяці тому
Ссылка на репозиторий с кодом: github.com/bukachukcom/symfony6/tree/lesson14 В этом видео мы будем разбираться на практическом примере, как создавать приложения для планировщика задач Linux cron с помощью фреймворка Symfony и компонента Symfony/Console. Для извлечения данных с сайта мы также воспользуемся компонентом Symfony/Dom-crawler, чтобы избежать использование регулярных выражений для пар...
Использование утилиты mysqldump для восстановления базы MYSQL
Переглядів 1482 місяці тому
В этом видео мы рассмотрим такую консольную утилиту как mysqldump. С помощью нее мы момем снять слепок со всей базы данных или с отдельных таблиц и даже записей. Также настройками можем поменять режимы ввода данных в новую базу. Разберемся как работает INSERT INTO и для чего он нужен. Видео описывает процесс восстановления базы данных MySQL с использованием утилиты mysqldump. Пользователь получ...
Блог на чистом PHP. Урок 5. Устанавливаем Websocket сервер на PHP и отправляем уведомления в браузер
Переглядів 5062 місяці тому
Ссылка на репозиторий с кодом из видео, вы можете скачать ZIP или сделать clone репозитория: github.com/bukachukcom/blog-php/tree/lesson5 Смотрите другие этапы данного проекта: Часть 1 - ua-cam.com/video/IpKWU8YaTwg/v-deo.html Часть 2 - ua-cam.com/video/Q8cX-RrdaFU/v-deo.html Часть 3 - ua-cam.com/video/OaOiORXqbOQ/v-deo.html Часть 4 - ua-cam.com/video/RF80jXUnBe0/v-deo.html В этом видео мы уста...
Symfony 6 курс. Урок 13. Написание Unit тестов в Symfony фреймворке
Переглядів 3003 місяці тому
Ссылка на репозиторий с кодом: github.com/bukachukcom/symfony6/tree/lesson13 На протяжении этого видео мы погрузимся в мир тестирования в Symfony 6 с помощью фреймворка PHPUnit. Мы начнем с изучения основных принципов написания юнит-тестов и их ценности в разработке программного обеспечения. Затем мы рассмотрим, как Symfony 6 упрощает создание и выполнение тестов благодаря своим встроенным инст...
Блог на чистом PHP. Урок 4. Поля select и checkbox. Отправка почтовых уведомлений PHP.
Переглядів 4814 місяці тому
Ссылка на репозиторий с кодом из видео, вы можете скачать ZIP или сделать clone репозитория: github.com/bukachukcom/blog-php/tree/lesson4 Смотрите другие этапы данного проекта: ua-cam.com/video/IpKWU8YaTwg/v-deo.html ua-cam.com/video/Q8cX-RrdaFU/v-deo.html ua-cam.com/video/OaOiORXqbOQ/v-deo.html ua-cam.com/video/RF80jXUnBe0/v-deo.html ua-cam.com/video/1qaJR9Gw414/v-deo.html Приветствую! Если вы...
Symfony 6 курс. Урок 12. Использование событий (events) в Doctrine ORM
Переглядів 4644 місяці тому
Symfony 6 курс. Урок 12. Использование событий (events) в Doctrine ORM
Тюнинг и оптимизация серверных настроек MYSQL
Переглядів 2524 місяці тому
Тюнинг и оптимизация серверных настроек MYSQL
Блог на чистом PHP. Урок 3. Делаем админку. Постраничная навигация. Поля select и checkbox
Переглядів 5645 місяців тому
Блог на чистом PHP. Урок 3. Делаем админку. Постраничная навигация. Поля select и checkbox
Блог на чистом PHP. Урок 2. Добавляем админку и комментарии, переезжаем на PDO MYSQL
Переглядів 6255 місяців тому
Блог на чистом PHP. Урок 2. Добавляем админку и комментарии, переезжаем на PDO MYSQL
Symfony 6 курс. Урок 11. Symfony Messenger для обработки задач из очереди
Переглядів 7055 місяців тому
Symfony 6 курс. Урок 11. Symfony Messenger для обработки задач из очереди
Блог на чистом PHP. Урок 1. Создание сайта блога на PHP без фреймворков и ООП для начинающих
Переглядів 2,2 тис.5 місяців тому
Блог на чистом PHP. Урок 1. Создание сайта блога на PHP без фреймворков и ООП для начинающих
Symfony 6 курс. Урок 10. Создание класса сервиса для проверки уникальности текста
Переглядів 5675 місяців тому
Symfony 6 курс. Урок 10. Создание класса сервиса для проверки уникальности текста
Маршрутизация запросов PHP для начинающих. Роутинг в PHP
Переглядів 1,3 тис.5 місяців тому
Маршрутизация запросов PHP для начинающих. Роутинг в PHP
Symfony 6 курс. Урок 9. Добавление пагинации и фикстуры тестовых данных
Переглядів 5495 місяців тому
Symfony 6 курс. Урок 9. Добавление пагинации и фикстуры тестовых данных
Symfony 6 курс. Урок 8. Создание Voter и формы в зависимости от пользователя
Переглядів 7306 місяців тому
Symfony 6 курс. Урок 8. Создание Voter и формы в зависимости от пользователя
Symfony 6 курс. Урок 7. Создание формы авторизации и регистрации пользователя
Переглядів 1 тис.6 місяців тому
Symfony 6 курс. Урок 7. Создание формы авторизации и регистрации пользователя
Symfony 6 курс. Урок 6. Работа с формами в Symfony
Переглядів 8946 місяців тому
Symfony 6 курс. Урок 6. Работа с формами в Symfony
Symfony 6 курс. Урок 5. Шаблоны. Дата трансформер. Добавление отношений ManyToMany
Переглядів 1,3 тис.6 місяців тому
Symfony 6 курс. Урок 5. Шаблоны. Дата трансформер. Добавление отношений ManyToMany
Symfony 6 курс. Урок 4. Создание связи ManyToOne в Doctrine. Добавление в форму EntityType
Переглядів 1,5 тис.6 місяців тому
Symfony 6 курс. Урок 4. Создание связи ManyToOne в Doctrine. Добавление в форму EntityType
Symfony 6 курс. Урок 3. Создание миграции базы данных, создание сущности Entity и CRUD
Переглядів 2,5 тис.6 місяців тому
Symfony 6 курс. Урок 3. Создание миграции базы данных, создание сущности Entity и CRUD
спасибо 🙏
Это одно из самых полезных видео. Не знал, что header, payload в JWT токене кодируются в base64. Также интересно было узнать, как подключить пакет lexik/jwt-authentication-bundle в Symfony приложение. Михаил, спасибо! 🎉
спасибо 🙏
Только начинаю изучение php. Пока очень доволен подача материала без воды, только самое необходимое это именно то что я искал.
Мне кажется для "простого" магазина слишком много кода. Простой вариант это скачать шаблон интернет магазина на гугл таблице ну или в Excel товары забить и скормить эту таблицу скрипту, который из нее заберет данные и расставит в виде плиток товаров. В общем надо чтобы без программирования и бесплатно без ограничений по количеству товаров, времени работы и без платного хостинга. Спасибо за ваше видео👍👍👍
Да, здесь больше про программирование, если нужен именно магазин с минимальными усилиями, то хороший вариант это Opencart к которому можно купить плагины для платежных систем итд.
какая то фигня, больше проблем чем пользы,
Польза возникнет когда проект будет большой и над ним будет работать несколько разработчиков, тк очень трудно править чужой код в сложном проекте и не сломать что-либо
Не знаю заинтересует ли, но что если продолжить эту тему? Например созданием пользовательского обработчика сессий session_set_save_handler() с реализацией объекта обработчика сессий. Он будет переопределять сохранение не в файл, а БД например и брать данные оттуда же.
Ну можно подумать)) Это откуда такое задание)?
@@bukachuk_php Не так давно смотрел видео с собесом, там задали вопрос с переопределением сессий. Парень из видео ответил ссылаясь на эту функцию (функция из оф доков PHP там комментах есть реализация), интересно стало то что эта тема сессий в целом на PHP не сильно где раскрывается. Обычно все останавливается на уровне суперглобальных массивов и дальше надо рыть. Ну а здесь удачно так видео на тему сессий и куки, решил предложить развить идею, возможно будет что добавить помимо оф документации.
Огромное вам спасибо!
Более детальное видео про COOKIE и сессии PHP ua-cam.com/video/K7uGh-j28Yc/v-deo.html
Супер, спасибо за видео
Михаил, спасибо большое за видео. Хотелось бы увидеть видео про токены и REST API на чистом php
Скажите, а как часто используются эти формы? Все таки большая часть приложений разделена на бек и фронт, а там я даже не знаю, есть ли смысл использовать формы и можно ли это вообще сделать) Как мне кажется формы полезны если это монолитное приложение, а таких меньшинство
В целом тенденция идет ухода от них в сторону REST, но по факту таких приложений еще очень много и не всегда нужен отдельно фронт, если например делаем прототип итд.
Good job! I appreciate these videos. Please keep it up!
Коммент в поддержку канала. Михаил делает полезное дело.
Хорошее видео, понятно объясняете 👍
почему я только сейчас узнал про mc (( сколько ж я страдал в консоли ... спасибо!
24:18 Кажется, что указание атрибутов наподобие `#[Groups(['groupOne'])]` над свойствами ведет к "засорению" класса сущности? Может быть есть способ этого избежать?
@@niknt атрибут является теперь элементом языка программирования php, поэтому по идее норм, если мне не изменяет память то это можно также описать в xml формате в отдельном xml файле, но мне кажется это неудобным, посмотрите в документации доктрины или симфони, вроде можно было описать их в xml
Годный контент ! Прошу продолжить
Наконец-то новое видео. Недавно установил эту программу, удобная в использовании. Много нового для себя узнал в этом видео! Спасибо! А по symfony ux turbo планируете видео записать?
👍
спасибо 😇
коммент для продвижения
Михаил, огромное спасибо за видео! 💫 9:30 кто бы мог подумать, что в контроллере $this-json() может вести к вызову symfony / serializer.
супер я ждал это видео
да капец он умный
капец он умный
Спасибо большое, что не забываете подписчиков! Спасибо!
Михаил, скажите пожалуйста, а вы и используете roadrunner?
Не доводилось использовать
@@bukachuk_php было б неплохо, от вас такой урок увидеть!
Михаил, спасибо за видео! А будет продолжение по симфони?
Да да, просто был немного занят)
Спасибо за интересное видео! 🔥 52:05 - тут говорится, что для получения оригинального объекта фабрики нужно написать $user->object(). В свежей версии ZenstruckFoundryBundle они это изменили, и делают так: $user->_real()
Очень интересно! Спасибо за видео.
Это уникальный контент! Спасибо!
В продакшене юзается aws sqs для очередей и типичный консюмер выглядит так. while (true) и там происходит receiveMessage(). Будет ли лучшим решением юзать symfony messenger для создания консьюмеров и в чем будет его преимущество ?
Тут сложно сказать точно, тк основное преимущество будет в унификации и готовом решении () если вы используете симфони, плюс решение отлажено и работает, там они пакуют сериалайзером это немного раздувает тело сообщения, а оно ограничено, но можно сделать свой упаковщик. минусом может быть повышенное потребление ресурсов в том числе CPU.
Спасибо за плейлист, бегло посмотрел пару видео и кажется это то что надо чтобы с Symfony разобраться. Впитываю как губка все что в видео, после Laravel нужно быстро на Symfony перестроиться) Круто было бы ссылку на репозиторий прикрепить) С состоянием проекта как видео начинается Вот мне например сейчас конкретно API в Symfony нужно и есть выходные чтобы разобраться. Я взял бы репозиторий, включил бы видео и все руками за автором повторил, осмысляя все что вещается. А сейчас просто внимательно смотрю
Спасибо за видео! 😃 Возникла ошибка при редактировании записи блога: Gedmo\Timestampable\Mapping\Event\Adapter\ORM::getRawDateValue(): Argument #1 ($mapping) must be of type array, Doctrine\ORM\Mapping\FieldMapping given, called in /home/.../projects/symfony6-test/vendor/gedmo/doctrine-extensions/src/Timestampable/Mapping/Event/Adapter/ORM.php on line 35. Оказалось, что это из-за того, что в моем проекте используется 3 версия ORM: doctrine/orm v.3.1.3. Сейчас пакет "gedmo/doctrine-extensions" не поддерживает эту версию, но они добавили ее поддержку в ветке master. Чтобы исправить ошибку, пришлось добавить в composer.json: "gedmo/doctrine-extensions": "dev-main as 3.16", И после этого сделать `composer update`.
Я вас помню в одном из учебных платформ вы были моим куратором)
Было да, работал в Скиллбокс в свое время
Как лучше создать api просто на symfony ? Или например использовать симфоневский api platform ?
Это сложный вопрос и на него нет однозначного ответа, плюс вкусовщина, тк зависит от проекта или компании, если проект долгосрочный то нужно думать о том, чтобы завтра API platform не перестали разрабатывать по каким-либо причинам, тк придется в итоге искать альтернативу, далее например вопрос привлечения новых разработчиков в проект, разработчика знающего Symfony будет найти проще, чем разработчика, знающего API Platform. В конечном счете Symfony идет в туже сторону и возможно они выкатят завтра то, что сделает смысл использования API Platform минимальным итд.
Очень доступно и качественно. Спасибо!
на Symfony 7 после "use TimestampableEntity;" вылеза ошибка "Gedmo\Timestampable\Mapping\Event\Adapter\ORM::getRawDateValue(): Argument #1 ($mapping) must be of type array, Doctrine\ORM\Mapping\FieldMapping given, called in /var/www/symfonytask/task_project/vendor/gedmo/doctrine-extensions/src/Timestampable/Mapping/Event/Adapter/ORM.php on line 35", я её решил простым способом преобразовав $mapping в массив непосредственно в vendor/gedmo/doctrine-extensions/src/Timestampable/Mapping/Event/Adapter/ORM.php, но думаю это не правильно, когда трогаем дерективу vendor, может подскажете как можно это сделать вернее?
Понятно, быстро. Спасибо
Очень хорошо объяснили. Давно не писал на пыхе, поздабыл как пространство имен пишется по psr.
Спасибо большое за интересное видео. Делаю ваши уроки на Symfony 7.0.7, используется пакет "doctrine/orm" v.3.1.3. Чтобы устранить лишние запросы при показе списка блогов, пришлось в коде, показанном в конце видео 18:30, написать так: $blogs = $this->createQueryBuilder('b') ->innerJoin('b.user', 'u') ->addSelect('u');
круто
Приходилось иметь дело только с cms-bitrix и захотелось начать изучение какого нибудь php-фреймворка. Уроки очень крутые! Большое спасибо, желаю хорошего развития вашему каналу!
{{ dump(blog) }}
Messenger и rabbitmq) 😊
Супер видео.
Спасибо 💪
Как никогда мне это нужно. ❤
Михаил добрый, проверьте пожалуйста почту 🙏, я заявку оставил на консультацию.