
Сессии и куки в PHP: частые ошибки новичков
Пользователь входит на сайт, но при переходе на другую страницу снова видит форму логина. Разбираем, почему сессии в PHP ломаются у новичков и как их настроить, чтобы они работали.

Пользователь входит на сайт, но при переходе на другую страницу снова видит форму логина. Разбираем, почему сессии в PHP ломаются у новичков и как их настроить, чтобы они работали.

За полчаса вы поднимете авторизацию на сессиях, научитесь читать и ставить куки и не наступите на классические грабли с «headers already sent».

Как принять данные из формы и не открыть дыру для SQL-инъекций и XSS. Подготовленные выражения PDO, экранирование вывода и проверка входа за один заход, без лишней теории.

Форма обратной связи, которая пишет заявки в базу и шлёт письмо, — типичная точка входа для SQL-инъекций и подделки заголовков. Разбираем, где именно ломается наивный код и как закрыть каждую дыру.

Как правильно открыть соединение с MySQL через PDO, настроить режим ошибок и кодировку, использовать подготовленные запросы и не подставить сайт под SQL-инъекцию.

За 20 минут вы получите рабочее подключение к MySQL через PDO, настроенное так, чтобы падало с понятной ошибкой, а не молчало. Разбираем DSN, режим ошибок и кодировку до того, как что-то сломается.

За 15 минут вы поднимете рабочее подключение к MySQL через PDO на PHP 8.x: правильная строка DSN, обработка ошибок и кодировка UTF-8. Разберём ошибки, на которых спотыкаются почти все.

Сокет отдаёт recv() половину сообщения — и код на клиенте зависает в ожидании. Разбираем, почему TCP не знает границ сообщений и как строить обмен поверх потока байтов.

За полчаса вы научитесь измерять длину строки, искать и заменять подстроки, обрезать пробелы и безопасно работать с кириллицей в PHP 8.x. С готовыми примерами, которые можно запустить сразу.

Кеш держал в памяти объекты, которые давно должны были умереть, и RSS процесса рос до перезапуска. Разбираем, где weakref решает проблему, а где создаёт новую.

Строковые функции PHP кажутся простыми, пока не столкнёшься с кириллицей, которая ломает substr, или mb_-функциями без явной кодировки. Разбираем приёмы, которые не подведут на UTF-8.

PHP-массивы — это на самом деле упорядоченные хеш-таблицы, и от этого зависит поведение сортировки, слияния и работы с ключами. Разбираем приёмы, которые ломаются чаще всего.