Разработка веб-приложений на РНР 8
Год издания: 2024
Автор: Колесниченко Д. Н.
Издательство: БХВ-Петербург
ISBN: 978-5-9775-1830-7
Серия: Профессиональное программирование
Язык: Русский
Формат: PDF
Качество: Отсканированные страницы + слой распознанного текста
Количество страниц: 498
Описание: На практических примерах описано создание веб-приложений на языке PHP версии 8.x. Даны начала разработки на PHP: установка и настройка Apache 2.4, PHP, MySQL и кроссплатформенной сборки XAMPP, выбор редактора PHP-кода, синтаксис языка, самые полезные функции и нововведения PHP 8.x. Рассмотрено создание веб-приложений с использованием популярного фреймворка Laravel и шаблонизатора Blade. В качестве хранилища данных использованы два сервера – самая современная версия MySQL и набирающая популярность СУБД MongoDB. Раскрыты особенности создания индикатора загрузки файла и разыменовывания массивов, приведены примеры устранения типичных SEO-ошибок, допускаемых программистами, описана работа с PDO, JSON, MP3, Curl, MobileDetec Особое внимание уделяется безопасности веб-приложений – рассматривается, как уберечь их от основных атак, как установить SSL-сертификат и как уберечь сам сервер от неприятностей.
Примеры страниц (скриншоты)
Оглавление
Предисловие ............................................................................................................................ 15
Немного истории ...................................................................................................................... 15
Основные нововведения в РНР версии 8 ..................................................................................... 17
Улучшена производительность благодаря компиляции Just-In-Time .............................................. 17
Именованные аргументы ........................................................................................................... 17
Атрибуты вместо аннотаций PHPDoc ........................................................................................... 17
Объявление свойств в конструкторе ........................................................................................... 18
Выражение Match и оператор nullsafe ......................................................................................... 18
Новые классы, интерфейсы и функции ....................................................................................... 19
Улучшения в системе типов и обработке ошибок ......................................................................... 19
Прочие улучшения синтаксиса ................................................................................................... 20
ЧАС Т Ь 1. ТЕОРИЯ .................................................................................................................... 21
РАЗДЕЛ 1. БЫСТРЫЙ СТАРТ ....................................................................................................... 23
Глава 1. Установка необходимого программноrо обеспечения ...................................................... 25
1.1. Нужно ли устанавливать программное обеспечение? ............................................................ 25
1.2. Выбор РНР-редактора и FТР-клиента ................................................................................... 27
1.3. Установка связки Apache + РНР + MySQL в Windows ............................................................. 30
1.3 .1. Для опытных пользователей: установка вручную ............................................................. 30
Установка веб-сервера Apache .................................................................................................. 30
Установка РНР ......................................................................................................................... 32
1.3.2. Установка для новичков (рекомендуется) ......................................................................... 39
Глава 2. Программа на PIIP ...................................................................................................... 43
2.1. Ваша первая программа .................................................................................................... 43
2.2. Запуск РНР-проrраммы ...................................................................................................... 44
2.3. Вывод текста без echo ....................................................................................................... 45
Глава 3. Основы синтаксиса PIIP .............................................................................................. 48
3.1. Переменные ..................................................................................................................... 48
3 .1.1. Правила объявления переменных. Имена переменных ..................................................... 48
3.1.2. Типы данных переменных ............................................................................................... 49
3.1.3. Булевы переменные ....................................................................................................... 51
3 .1.4. Операции над переменными ........................................................................................... 51
3.1.5. Ссылки .......................................................................................................................... 52
3.2. Константы ........................................................................................................................ 53
3.3. Выражения и операции ...................................................................................................... 57
3.3.1. Что такое выражение? .................................................................................................... 57
3.3.2. Арифметические операции .............................................................................................. 57
3.3.3. Логические выражения ................................................................................................... 58
3.3.4. Битовые операции .......................................................................................................... 58
3.3.5. Приоритеты операций ..................................................................................................... 59
3.3.6. Операторы эквивалентности == и === ..... : .................................................................... 60
3.3.7. Оператор??- сокращенная форма тернарной условной операции ......................................... 61
3.3.8. Операции со строками ...................................................................................................... 61
3.3.9. Оператор nullsafe .............................................................................................................. 62
3.4. Условный оператор .............................................................................................................. 63
3.5. Циклы ................................................................................................................................. 64
3.5.1. Цикл со счетчиком for ........................................................................................................ 64
3.5.2. Цикл while ......................................................................................................................... 65
3.5.3. Цикл do-while .................................................................................................................... 65
3.5.4. Принудительное завершение цикла и пропуск итерации ....................................................... 65
3.6. Оператор выбора switch-case ................................................................................................. 66
3.7. Выражение match в РНР 8 ..................................................................................................... 67
Глава 4. Файл конфигурациирhр.ini .............................................................................................. 68
4.1. Каталог /etc/php ................................................................................................................... 68
4.2. Параметры памяти ................................................................................................................ 69
4.3. Zend OPcache ........................................................................................................................ 69
4.4. Максимальное время выполнения ........................................................................................... 71
4.5. Загрузка файлов ............ , ..................................................................................................... 72
4.6. Обработка сессий ................................................................................................................... 72
4.7. Буферизация вывода ............................................ -................................................................ 73
4.8. Директива error_ reportingO .................................................................................................... 73
4.9. Отключение потенциально опасных функций ........................................................................... 73
4.10. Директива allow_url_open ..................................................................................................... 74
РАЗДЕЛ 2. ПЕРЕДАЧА ПАРАМЕТРОВ РНР-ПРОГРАММАМ ..................................................................... 75
Глава 5. Методы GET и POST .......................................................................................................... 77
5.1. Интерфейс CGI ....................................................................................................................... 77
5.2. Метод GET .............................................................................................................................. 79
5 .3. Метод POST ........................................................................................................................... 79
Глава 6. Протокол НТТР и интерфейс CGI ........................................................................................ 81
6.1. Специальные переменные окружения CGI ........................................................................... 81
6.2. Заголовки протокола НТТР ................................................................................................... 82
6.3. Коды ответов протокола НТТР ............................................................................................. 83
Глава 7. Передача параметров посредством НТМL-формы ........................................................... 85
7.1. Создание простейшей формы и ее обработка в сценарии ................................................... 85
7.2. Создание пользовательского интерфейса с помощью формы ............................................ 88
7.2.1. Ввод текста. Теги/NРИТи ТЕХТАRЕА .......................................................................... 88
7.2.2. Зависимые и независимые переключатели ..................................................................... 90
7.2.3. Списки выбора .................................................................................................................. 91
7.2.4. Форма ДJIЯ передачи файлов ............................................................................................ 93
7.2.5. Кнопки ............................................................................................................................... 93
7.3. Проверка параметров формы ................................................................................................. 94
7.3 .1. Проверка корректности e-mai 1 ......................................................................................... 95
7.3.2. Проверка правильности номера банковской карты .............................................................. 96
7.3.3. Удаление лишних пробелов ......................................... : ................................................... 97
7.4. Директива@сsr/шаблонизатора Blade .................................................................................... 97
Глава 8. Не забываем о поисковой оптимизации ........................................................................... 99
8.1. «Дружественные» интернет-адреса ....................................................................................... 99
8.1.1. Организация SEF URL с помощью файла . htaccess .............................................................. 100
8.1.2. Использование фреймворков ............................................................................................. 102
8.2. Идентификаторы сеансов ..................................................................................................... 102
8.3. Производительность сценария .............................................................................................. 102
8.3.1. Использование шаблонизатора. Сокращение количества инструкций echo ........................... 103
8.3.2. Включение OPcache ........................................................................................................ 103
8.3.3. Включение НТТР 2.О ...................................................................................................... 104
8.3.4. Обновление версии РНР ................................................................................................ 104
РАЗДЕЛ 3. МАССИВЫ И спис:ки ............................................................................................... 105
Глава 9. Основные операции над массивами и списками ............................................................ 107
9.1. Массив и список. Циклfоrеасh ............................................................................................. 107
9.2. Функции /istO и arrayo ......................................................................................................... 110
9.3. Удаление массива ................................................................................................................. 112
9.4. Слияние массивов ................................................................................................................. 112
9.5. Функциярriпt_rО .................................................................................................................. 114
9 .6. Разыменовывание массива ................................................................................................... 115
Глава 10. Функции сортировки массивов ...................................................................................... 117
10.1. Сортировка массивов ......................................................................................................... 117
10.2. Функция sortO - сортировка списка .................................................................................... 117
10.3. Функция asortO- сортировка массива по значениям ........................................................... 118
10.4. Функция ksortO - сортировка по ключам ........................................................................... 119
10.5. Функции array_reverseO и shuffleO ................................................................................... 120
10.6. Собственная функция сортировки ..................................................................................... 120
10.7. Натуральная сортировка .................................................................................................... 121
Глава 11. Особые операции над массивами ................................................................................. 123
11.1. Добавление и удаление элементов массива ...................................................................... 123
11.2. Упаковка переменных в массив и их извлечение .......................................... , ................. 124
11.3. Получение части массива ................................................................................................ 126
11.4. Функции автоматического заполнения массива ................................................................. 126
11.5. Сравнение массивов ........................................................................................................ 127
11.6. Полезные операции над массивом .................................................................................... 128
11.6.1. Вычисление суммы и произведения всех элементов массива .......................................... 128
11.6.2. Проверка существования элемента в массиве ............................................................ 128
l l.6.3. Получение случайного элемента из массива .............................................................. 129
11.6.4. Удаление дубликатов из массива ................................................................................ 129
11.6.5. Получение значений и ключей массива ...................................................................... 130
11.6.6. Замена местами значений и ключей ............................................................................ 130
11.6.7. Подсчет значений в массиве ........................................................................................ 130
11.6.8. Замена в массиве ........................................................................................................... 131
11.6.9. Поиск в массиве ........... : ................................................................................................ 131
11.6.1 О. Прогулка по массиву .................................................................................................. 132
РАЗДЕЛ 4. ФУIIКЦИИ В PIIP ....................................................................................................... 135
Глава 12. Полезные стандартные функции. Работа с датой ........................................................... 137
12.1. Генератор случайных чисел ............................................................................................... 137
12.2. Дата и время ........................................................................................................................ 138
12.2.1. Кратко о timestamp ........................................................................................................ 138
12.2.2. Функции strtotimeO и checkdateO ................................................................................ 138
12.2.3. Вывод даты .................................................................................................................... 139
12.2.4. Использование type="date" .......................................................................................... 141
12.2.5. Функция checkdateO: проверка даты на корректность .............................................. 141
12.2.6. Класс DateТime: удобная работа с датой и временем ................................................ 143
Создание даты по строке .................................................................................................... 143
Вычисление количества дней между двумя датами .............................................................. 144
Работа с временнь1ми интервалами ................................................................................... 145
12.2.7. Настройка РНР для корректной работы с датами ...................................................... 146
12.3. Математические функции .................................................................................................. 146
Глава 13. Функции для работы со строками ................................................................................ 148
13 .1. Основные строковые функции .......................................................................................... 148
13). Специальные функции замены .......................................................................................... 152
13.3. Функции преобразования строки ...................................................................................... 154
13.4. Функции преобразования кодировок ................................................................................ 156
13.5. Функции для работы с отдельными символами строки. Разыменовывание строки ................. 157
13.6. Функция md50 и другие функции шифрования/хеширования. API хеширования
паролей .................................................................................................................................. 158
13.7. Функции exp/odeO и imp/odeO: работа с подстроками ......................................................... 159
13.8. Статистические функции ................................................................................................... 160
13.9. Функции вывода текста ...................................................................................................... 161
13.10. Установка локали .............................................................................................................. 163
13.11. Форматирование чисел и денежных величин ....................................................................... 164
13 .12. Преобразование систем счисления .................................................................................... 164
13.13. Строки в РНР 7/8 .............................................................................................................. 165
Глава 14. Работаем с файлами и каталогами ................................................................................ 166
14.1. Права доступа в UNIX ........................................................................................................ 166
14.2. Чтение файла .......................................... .-............................................................................ 168
14.2.1. ФункцииfорепО иfreadO ............................................................................................. 169
14.2.2. ФункцияfilеО: построчное чтение файла ................................................................... 171
14.2.3. Чтение всего файла: фyнкцияfileget_contentsO ....................................................... 172
14.3. Запись файла ................ : ...................................................................................................... 172
14.4. Создание временных файлов ............................................................................................. 173
14.5. Работа с СSV-файлами ........................ , ....................... ." ...................................................... 173
14.6. Специальные функции для работы с файлами ................................................................. 175
14.6.l. Функции для работы с именами файлов ..................................................................... 175
14.6.2. Работа с правами доступа ............................................................................................ 176
14.6.3. Копирование, переименование и удаление файлов ................................................... 177
14.6.4. Время доступа к файлу .......................................................................................... : ...... 178
14.6.5. Другие полезные функции ........................................................................................... 178
14. 7. Совместный доступ к файлу .............................................................................................. 179
14.8. Функции для работы с каталогами .................................................................................... 180
Глава 15. Вывод графических изображений средствами РНР ....................................................... 182
15.1. Библиотека GD .................................................................................................................... 182
15 .1.1. Получение информации об изображении ................................................................... 182
15 .1.2. Конвертирование графических форматов .................................................................. 185
15 .1.3. Вывод текста поверх картинки. Задание цвета .......................................................... 187
15.1.4. Прозрачность ................................................................................................................ 190
15.1.5. Рисование графических примитивов .......................................................................... 191
15.1.6. Поворот изображения ................................................................................................... 193
15.2. Изменение размера изображения .............................. : ............................................. :········· 193
15.3. Создание водяных знаков .................................................................................................. 195
15.4. Поддержка графического формата WebP ......................................................................... 197
Глава 16. Работа с сетевыми сокетами в РНР. Сетевые функции ................................................... 199
16.1. Еще раз о том, что такое сокет ....... :. ........................................... . ..................................... 199
16.2. ФункцияfsосkорепО ........................................................................................................... 199
16.3. Примеры работы с сокетами .............................................................................................. 200
16.3.1. Работаем с протоколом НТТР ..................................................................................... 200
16.3.2. Отправка почты с использованием сокетов ............................................................... 202
16.3.3. Простейший клиент/сервер ........................... · ............................................................... 204
16.4. Блокирующий и неблокирующий режимы сокета .............................................................. 206
16.5. DNS-функции ...................................................................................................................... 206
Глава 17. Собственные функции .............................................................................................. 208
17 .1. Зачем нужны собственные функции? ............................................................................... 208
17.2. Особенности функций в РНР ............................................................................................. 208
17.3. Объявление функции ................................ : ......................................................................... 209
17.4. Области видимости функции ............................................................................................. 211
17.5. Вложенность функu,ий ........................................................................................................ 211
17 .6. Переменное число аргументов .......................................................................................... 213
17.7. Передача массивов в качестве параметров ....................................................................... 214
17.8. Передача аргументов по ссылке ........................................................................................ 216
17.9. Генераторы .......................................................................................................................... 217
17 .1 О. Полезные примеры ........................................................................................................... 219
17.10.1. Получение реального IР-адреса клиента .................................................................. 219
17 .10.2. Генерирование сложного пароля ............................................................................... 220
17.10.3. Рекурсивное удаление каталога ................................................................................. 220
17 .10.4. Отправка файла в браузер .......................................................................................... 221
17.10.5. Сжатие файла «на лету» ............................................................................................. 222
РАЗДЕЛ 5. БАЗА ДАIПIЪIХ МYSQL .............................................................................................. 225
Глава 18. Установка MySQL на VDS ............................................................................................. 227
18.1. Несколько вводных слов .................................................................................................... 227
18.2. Установка сервиса MySQL ................................................................................................ 227
18.3. Настройка MySQL .............................................................................................................. 228
18.4. Создание МуSQL-пользователя ......................................................................................... 229
18.5. Запуск и останов сервера ................................................................................................... 230
Глава 19. Основы SQL ................................................................................................................. 231
19 .1. Немного истории ................................................................................................................ 231
19.2. Преимущества SQL ............................................................................................................ 231
19.3. Как выглядят запросы? ....................................................................................................... 232
19.4. Что такое база данных? ........................ : ............................................................................. 233
19.5. Создание таблиц ................................................................................................................. 234
19.6. Добавление записей в таблицу .......................................................................................... 238
19.7. Обновление записей ........................................................................................................... 238
19 .8. Выборка записей ................................................................................................................. 239
19.9. Удаление записей ................................................................................................................ 240
19.10. Встроенные функции ........................................................................................................ 241
19 .11. Группировка записей. Сложные запросы ....................................................................... 242
19. 12. Копирование записей из одной таблицы в другую ........................................................ 245
19.13. Кеширование запросов ..................................................................................................... 245
Глава 20. Функции для работы с MySQL ..................................................................................... 248
20.1. Способы работы с базой данных ....................................................................................... 248
20.2. Расширение mysq/i .............................................................................................................. 249
20.2.1. Подключение к серверу MySQL ................................................................................. )49
20.2:2. Передача запросов серверу .......................................................................................... 250
20.2.3. Метод rea/_escape_string0 ........................................................................................... 252
20.3. Расширение PDO ................................................................................................................ 252
20.3.1. Соединение с базой данных ......................................................................................... 252
20.3.2. Выполнение запросов и чтение результата ................................................................ 254
20.3.3. Получение данных ........................................................................................................ 256
20.3.4. Особенности использования операторов LJКE, LIM!Tи IN ...................................... 257
20.3.5. Имена таблиц и полей при работе с PDO ................................................................... 258
20.3.6. Запросы вставки и обновление .................................................................................... 258
Глава 21. Работа с базой данных в Laravel ................................................................................. 260
21.1. Способы работы с базой даннъrх ....................................................................................... 260
21.2. Сырые (прямые) запросы ................................................................................................... 261
21.3. Конструктор запросов ........................................................................................................ 262
21.4. Система Eloquent ................................................................................................................ 265
РАЗДЕЛ 6. ИНСТРУМЕНТЫ ДЛЯ СОЗДАНИЯ СЛОЖIIЫХ IIPOEKTOB ................................................... 269
Глава 22. Разработка собственного шаблонизатора ..................................................................... 271
22.1. Организация файлов и каталогов проекта ........................................................................ 271
22.2. Выносим параметры в отдельный файл ........................................................................... 273
22.3. Подключение дополнительных файлов ....................................................................... : .... 274
22.3.1. Инструкции inc/ude и require ....................................................................................... 274
22.3.2. Альтернативный способ подключения сценариев ..................................................... 275
22.3.3. Инструкции inc/ude_once и require_once .................................................................... 277
22.4. Шаблоны ............................................................................................................................. 277
Глава 23. Шаблонизатор Blade ...................................................................................................... 282
23.1. Введение в Blade ................................................................................................................. 282
23.2. Вывод значений скалярных переме,шых .......................................................................... 283
23.3. Директивы Blade ................................................................................................................. 283
23.3.1. Директива@if ............................................................................................................... 283
23.3.2. Директивы @jor, @foreach и @whi/e .......................................................................... 284
23.3.3. Директивы @fore/se и @endfore/se ............................................................................. 284
23.4. Включение представлений. Директива@iпс/иdе ............................................................. 285
23.5. Директива @csrf ................................................................................................................. 287
Глава 24. Объектно-ориентированное программирование ............................................................... 288
24.1. Основы ООП ....................................................................................................................... 288
24.2. Классы и объекты ............................................................................................................... 289
24.3. Конструкторы и деструкторы класса ................................................................................ 291
24.4. Наследование классов. Полиморфизм .............................................................................. 293
24.5. Область видимости членов класса .................................................................................... 294
24.6. Абстрактные классы и методы .......................................................................................... 295
24.7. Служебное словоfiпа/ ........................................................................................................ 295
24.8. Клонирование объектов ..................................................................................................... 296
24.9. Константы - члены класса ................................................................................................... 297
24.1 О. Статические члены класса ................. : ............................................................................. 297
24.11. Оператор instanceof .......................................................................................................... 298
24.12. Итераторы ......................................................................................................................... 298
24.13. Пространства имен ........................................................................................................... 299
24.13. l. Общая концепция ....................................................................................................... 299
24.13.2. Объявление пространства имен ................................................................................. 300
24.13.3. Псевдонимы ................................................................................................................ 301
24.14. Типажи ................................................. , ............................................................................. 302
24.15. Вызов метода или свойства класса выражением ........................................................... 303
24.16. Генераторы ........................................................................................................................ 303
24.17. Атрибуты ........................................................................................................................... 305
Глава 25. Хранение данных в Cookies и сессиях .......................................................................... 306
25.1. Зачем нужны Cookies и сессии? ........................................................................................ 306
25.2. Cookies или хранение данных на стороне клиента ............................................................. 306
25.2.1. Что такое Cookies? ........................................................................................................ 306
25.2.2. Установка Cookies ......................................................................................................... 307
25.2.3. Удаление Cookies .......................................................................................................... 308
25.2.4. Организация корзины с помощью Cookies ....................................................................... 309
25.3. Механизм сессий ................................................................................................................ 311
25 .3 .1. Для чего нужны сессии? .............................................................................................. 311
25.3.2. Автоматическое создание сессии ................................................................................ 312
25.3.3. Хранение данных в сессии ........................................................................................... 312
Глава 26. Обработка исключений .............................................................................................. 313
26.1. Введение в обработку исюпочений ................................................................................... 313
26.2. Блок catch ............................................................................................................................ 314
26.3. Блокjiпа//у ..................................................................................................... : ..................... 315
26.4. Глобальный обработчик исюпочений ........................................................................ : ...... 317
Глава 27. Контроль версий ...................................................................................................... 318
27.1. Выбор системы контроля версий ...................................................................................... 318
27 .2. Первоначальная настройка ........................................................................................... : ... .319
27 .3. Создание нового репозитория или получение его по существующему URL-aдpecy ....... 319
27.4. Операции с файлами. Перемещение и удаление версий файлов реriозитория .............. 320
27.5. Сохранение и восстановление незавершенных изменений ............................................. 321
27.6. Просмотр изменений и создание коммитов (фиксация изменений) .................................. 321
27.7. КоJШективная работа .................................................................................................. 322
27.8. Просмотр и изучение истории изменений файлов проекта ............................................... 322
27.9. Откат изменений. Удаление ошибок и корректировка созданной истории ......................... 323
27 .1 О. Синхронизация с удаленным репозиторием.
Регистрация удаленного репозитория и обмен изменениями .................................................... 323
Глава 28. Тестирование РНР-сценариев .................................................................................. 324
28.1. Программа работает, но не так, как нам нужно ............................................................... 324
28.2. «Самодельные» точки останова ..................................................................................... 325
28.3. Система автоматического тестирования ........................................................................... 327
28.4. Директива error _reporting ............................................................................................. 330
ЧАС ТЬ П. IIРАКТи:к.А ............................................................................................................ 331
РАЗДЕЛ 7. РАЗРАБОТ КА ОСНОВНЫХ ЭЛЕМЕНТОВ САЙТА ........................................................... 333
Глава 29. Загрузка файлов на сервер ....................................................................................... 335
29.1. Что нужно знать о загрузке файлов на сервер? ................................................................ 335
29.2. Реализация загрузки файла .............................................................................................. 338
29.3. Загрузка нескольких файлов .............................................................................................. 340
29.4. Индикатор загрузки файла ................................................................................................. 342
29.4.1. Некоторые теоретические предпосьmки ..................................................................... 342
29.4.2. Пример практической реализации .............................................................................. 345
29.5. Проблемы при загрузке файлов ......................................................................................... 352
Глава 30. Использование FТР-функций ....................................................................................... 353
30.1. Функции для работы с FTP ................................................................................................ 353
30.2. Примеры использования FТР-функций ............................................................................ 356
Глава 31. Отправка и прием почты .......................................................................................... 359
31.1. Отправка почты средствами РНР: функция mai/0 ........................................................... 359
· 31.1.1. Использование функции .............................................................................................. 3 59
31.1.2. Подробно о настройке сервера .................................................................................... 360
31.2. Класс PHPMai/er. Разработка сценария автоматической рассылки прайс-листа .................... 361
31.3. Получение писем по протоколу РОР3 ............................................................................. 365
31.4. Получение писем по протоколу IМАР .............................................................................. 367
Глава 32. Введение в PEAR ........................................................................................................ 370
32.1. Серьезные проекты и PEAR ............................................................................................... 370
32.2. Пример использования класса DB ..................................................................................... 372
Глава 33. Импорт и экспорт данных .......................................................................................... 375
33.1. Импорт прайс-листов из формата CSV в базу данных MySQL ............................................... 375
33.2. Преобразование файлов Excel в CSV с помощью РНР. Импорт прайсов из Excel ....................... 379
33.3. Работа с ХМL-файлами ....................................................................................... , .............. 380
33.3.1. Парсинг ХМL-файла ......................................................................................................... 380
33.3.2. Генерирование ХМL-файла ............................................................................................... 382
Глава 34. Работаем с МР3 ............................................................................................................ 384
34.1. Формат МР3 ........................................................................................................................ 384
34.2. Библиотека PEAR ................................................................................................................ 385
34.3. Вывод ID3-тeroв ................................................................................................................. 386
34.4. Редактирование ID3-тeroв ................................................................................................. 388
34.5. Удаление теrа ................................................................................................................... 388
Глава 35. Расширение cURL: практические примеры ..................................................................... 390
35.1. Этот загадочный cURL ........................................................................................................ 390
35.2. Авторизация на сайте и загрузка файла после нее ............................................................... 392
35.3. Замена фyнкцииji/eget_contentsO с помощью cURL ............................................................... 395
35.4. Загрузка файла через FTP .................................................................................................. 395
35.5. Проверка доступности сайта ............................................................................................... 396
РАЗДЕЛ 8. ВВЕДЕНИЕ В LARA VEL ................................................................................................. 399
Глава 36. Фреймворк или чистый РIIР-код? .................................................................................. 401
36.1. Что такое фреймворк? ....................................................................................................... .401
36.2. Обзор популярных РНР-фреймворков .................................................................................. .402
36.2.1. Zend Framework и The Laminas Project ................................................................................ 402
36.2.2. Laravel ...................................· . ..................................................................................... 403
36.2.3. Symfony .......................................................................................................................... 403
36.2.4. Yii .................................................................................................................................. .403
36.2.5 .. Codelgniter ..................................................................................................................... 404
Глава 37. Установка Laravel на VDS с Ubuntu Linux ........................................................................ 405
37.1. Выбор места для установки ......................................... , .................................................... .405
37.2. Установка необходимого ПО ........................................................................................... .405
3 7 .2.1. Установка веб-сервера Apache .................................................................................... 405
37.2.2. Установка РНР и его расширений ............................................................................... 407
37.2.3. Установка Laravel ......................................................................................................... 409
Глава 38. Определяем маршруты .............................................................................................. 412
38.1. Запросы протокола НТТР .................................................................................................. 412
38.2. Модель. Представление. Контроллер ............................................................................... 413
38.3. Простейшие маршруты. Сопоставление маршрута с контроллером ........................................ 414
38.4. Параметры в маршрутах .................................................................................................... 415
38.5. Имена маршрутов ............................................................................................................... 416
38.6. Префиксы маршрутов ........................................................................................................ 417
3 8. 7. Маршруты новостной страницы ...................................................................................... .417
Глава 39. Пишем контроллер ....................................................................................................... 418
39 .1. Создание контроллера ....................................................................................................... .418
39.2. Простой метод: ListO .......................................................................................................... 419
39.3. Методы с параметрами: ViewO и GetArchiveContenf0 ............................................................ 420
39.4. Обработка РОSТ-запроса ................................................................................................... 421
Глава 40. Создаем представление ................................................................................................ 422
40.1. Каталог resources/views ..................................................................................................... .422
40.2. Получение данных из контроллера .................................................................................. .423
40.3. Очистка кеша страниц и кеша представлений ................................................................ .424
Глава 41. Запрос и ответ ........................................................................................................... 425
41.1. Работаем с запросами. Класс Request .............................................................................. .425
41.1.1. Основные методы ......................................................................................................... 425
41.1.2. Получение информации о пользователе/запросе ............................................................. 426
41.1.3. Работа с файлами .......................................................................................................... 427
41.1.4. Собирая все вместе ....................................................................................................... 427
41.2. Класс Response ................................................................................................................... .428
Глава 42. Работа с данными ......................................................................................................... 430
42.1. Файловая система ............................................................................................................... 430
42.1.1. Конфигурация фасада Storage ..................................................................................... 430
42.1.2. Методы фасада Storage ................................................................................................ 431
42.1.3. Загрузка файлов на сервер .......................................................................................... .432
42. l.4. Метод download0 ......................................................................................................... .433
42.2. Сессии .................................................................................................................................. 433
42.3. Работа с Cookies ................................... :. ............................................................................. 435
РАЗДЕЛ 9. БЕЗОПАСНОСТЬ САЙТ А .............................................................................................. 437
Глава 43. Как взламываются сайты и как этому помешать?
Основные сведения ................................................................................................................. 439
43.1. Основные способы взлома сайта ...................................................................................... .439
43.2. Два самых распространенных метода взлома ......................................................... , ........ 441
43 .2.1. Межсайтовый скрилтинг .............................................................................................. 441
43.2.2. SQL-инъекuии .............................................................................................................. .443
43.3. Остальные методы ............................................................................................................. .446
Глава 44. SSL-сертификат для сайта .............................................·. ............................................ 447
44.1. Выбор сертификата ........................................................................................................... .447
44.1.1. Основные типы сертификатов ...................................................................................... .447
44.1.2. Какой тип сертификата выбрать? .................................................................................. 448
44.1.3. Особенности SSL-сертификатов разных типов ................................................................. 448
44.2. Где купить SSL-сертификат? ............................................................................................ .451
44.3. Установка сертификата на веб-сервер .............................................................................. 452
44.3. l. Веб-сервер Apache2 ...................................................................................................... 452
44.3.2. Веб-сервер Ngnix ......................................................................................................... .453
Глава 45. Защита РНР с помощью конфигурационного файла ....................................................... 454
45.1. Конфиrурационный файл php. ini ....................................................................................... 454
45.2. Отключение потенциально опасных функций ..................................................................... .455
45.3. Рекомендованные значения некоторых конфигурационных директив .................................... 455
РАЗДЕЛ 10. ПОЛЕЗНЫЕ СВЕДЕНИЯ .............................................................................................. 457
Глава 46. Устанавливаем визуальный редактор Summernote ......................................................... 459
46.1. Знакомство с редактором .................................................................................................. .459
46.2. Интеграция Summemote и Laravel ..................................................................................... .459
Глава 47. Работа с MongoDB средствами РНР ............................................................................... 462
47.1. Что такое MongoDB? .......................................................................................................... 462
47.2. Настройка интерпретатора РНР .......................................................................................... 463
47.3. Добавление данных в MongoDB ......................................................................................... 465
47.4. Чтение информации из базы данных .................................................................................. 467
47.5. Преобразование объекта в массив ..................................................................................... 469
ПРИЛОЖЕНИЯ .......................................................................................................................... 473
Приложение 1. Шаблоны проектирования ................................................................................... 475
ПI .1. Введение в шаблоны проектирования ............................................................................... .475
П 1.2. Шаблон «Стратегия» ....................................................................................................... .476
Пl.3. Шаблон «Адаптер» ............................................................................................................ .477
Пl.4. Шаблон «Фабрика» ............................................................................................................ 478
Пl.5. Шаблон «Одиночка» .......................................................................................................... 479
Приложение 2. Профайлинг ........................................................................................................ 481
П2.1. Что такое профайлинг? ..................................................................................................... .481
П2.2. Типы профайлеров ............................................................................................................. 481
П2.3. Профайлер Xdebug ............................................................................................................ .482
П2.4. XНProf ............................................................................................................................... .482
Приложение 3. Виртуальная машина ННVМ .................................................................................. 485
П3 .1. Что такое ННVМ? .............................................................................................................. 485
П3.2. Подойдет ли ННVМ именно для вас? ................................................................................... 486
П3.3. Установка HHVM .............................................................................................................. .487
П3.4. Настройка ННVМ .............................................................................................................. 487
П3.5. Язык Hack ...................................................................................................................... .489
Приложение 4. Описание электронного архива ........................................................................... 490
Предметный указатель .............................................................................................................. 492