Опубликовано

Новинка: “Разработка веб-приложений на PHP 8”

Разработка веб-приложений на PHP 8

На практических примерах описано создание веб-приложений на языке 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-сертификат и как уберечь сам сервер от неприятностей.
На сайте издательства находятся дополнительные главы, листинги из книги, а также необходимое программное обеспечение.

  • Синтаксис PHP. Нововведения PHP 8.x
  • Объектно-ориентированное программирование на PHP 8.x
  • Кроссплатформенная сборка XAMPP
  • MySQL и MongoDB
  • Работа с PDO, JSON, MP3, Curl, MobileDetect
  • Введение во фреймворк Laravel, шаблонизатор Blade
  • Безопасность веб-приложений

Книгу “Разработка веб-приложений на PHP 8” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Предисловие…………………………………………………………………………………………… 15

Немного истории……………………………………………………………………………………………………………………….. 15

Основные нововведения в PHP версии 8………………………………………………………………………………….. 17

Улучшена производительность благодаря компиляции Just-In-Time……………………………….. 17

Именованные аргументы……………………………………………………………………………………………………….. 17

Атрибуты вместо аннотаций PHPDoc…………………………………………………………………………………… 17

Объявление свойств в конструкторе……………………………………………………………………………………… 18

Выражение Match и оператор nullsafe…………………………………………………………………………………. 18

Новые классы, интерфейсы и функции…………………………………………………………………………………. 19

Улучшения в системе типов и обработке ошибок……………………………………………………………….. 19

Прочие улучшения синтаксиса……………………………………………………………………………………………… 20

Часть I.  Теория……………………………………………………………………………. 21

Раздел 1. Быстрый старт………………………………………………………………. 23

Глава 1. Установка необходимого программного обеспечения………………. 25

1.1. Нужно ли устанавливать программное обеспечение?……………………………………………………. 25

1.2. Выбор PHP-редактора и FTP-клиента………………………………………………………………………………. 27

1.3. Установка связки Apache + PHP + MySQL в Windows……………………………………………………… 30

1.3.1. Для опытных пользователей: установка вручную…………………………………………………….. 30

Установка веб-сервера Apache………………………………………………………………………………………… 30

Установка PHP…………………………………………………………………………………………………………………… 32

1.3.2. Установка для новичков (рекомендуется)…………………………………………………………………… 39

Глава 2. Программа на PHP…………………………………………………………………… 43

2.1. Ваша первая программа…………………………………………………………………………………………………….. 43

2.2. Запуск PHP-программы………………………………………………………………………………………………………. 44

2.3. Вывод текста без echo………………………………………………………………………………………………………… 45

Глава 3. Основы синтаксиса PHP………………………………………………………….. 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 в PHP 8………………………………………………………………………………………………….. 67

Глава 4. Файл конфигурации php.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_reporting()……………………………………………………………………………………………….. 73

4.9. Отключение потенциально опасных функций…………………………………………………………………. 73

4.10. Директива allow_url_open……………………………………………………………………………………………….. 74

Раздел 2. Передача параметров PHP-программам……………….. 75

Глава 5. Методы GET и POST…………………………………………………………………. 77

5.1. Интерфейс CGI…………………………………………………………………………………………………………………….. 77

5.2. Метод GET…………………………………………………………………………………………………………………………… 79

5.3. Метод POST…………………………………………………………………………………………………………………………. 79

Глава 6. Протокол HTTP и интерфейс CGI…………………………………………….. 81

6.1. Специальные переменные окружения CGI……………………………………………………………………….. 81

6.2. Заголовки протокола HTTP……………………………………………………………………………………………….. 82

6.3. Коды ответов протокола HTTP…………………………………………………………………………………………. 83

Глава 7. Передача параметров посредством HTML-формы…………………….. 85

7.1. Создание простейшей формы и ее обработка в сценарии………………………………………………. 85

7.2. Создание пользовательского интерфейса с помощью формы………………………………………… 88

7.2.1. Ввод текста. Теги INPUT и TEXTAREA………………………………………………………………………… 88

7.2.2. Зависимые и независимые переключатели…………………………………………………………………. 90

7.2.3. Списки выбора………………………………………………………………………………………………………………. 91

7.2.4. Форма для передачи файлов………………………………………………………………………………………… 93

7.2.5. Кнопки……………………………………………………………………………………………………………………………. 93

7.3. Проверка параметров формы…………………………………………………………………………………………….. 94

7.3.1. Проверка корректности e-mail……………………………………………………………………………………… 95

7.3.2. Проверка правильности номера банковской карты…………………………………………………… 96

7.3.3. Удаление лишних пробелов…………………………………………………………………………………………. 97

7.4. Директива @csrf шаблонизатора 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. Включение HTTP 2.0…………………………………………………………………………………………………… 104

8.3.4. Обновление версии PHP……………………………………………………………………………………………… 104

Раздел 3. Массивы и списки…………………………………………………….. 105

Глава 9. Основные операции над массивами и списками…………………….. 107

9.1. Массив и список. Цикл foreach………………………………………………………………………………………… 107

9.2. Функции list() и array()……………………………………………………………………………………………………… 110

9.3. Удаление массива…………………………………………………………………………………………………………….. 112

9.4. Слияние массивов……………………………………………………………………………………………………………… 112

9.5. Функция print_r()………………………………………………………………………………………………………………. 114

9.6. Разыменовывание массива………………………………………………………………………………………………. 115

Глава 10. Функции сортировки массивов…………………………………………….. 117

10.1. Сортировка массивов……………………………………………………………………………………………………… 117

10.2. Функция sort() — сортировка списка…………………………………………………………………………….. 117

10.3. Функция asort() — сортировка массива по значениям………………………………………………… 118

10.4. Функция ksort() — сортировка по ключам……………………………………………………………………. 119

10.5. Функции array_reverse() и shuffle()………………………………………………………………………………… 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

11.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.10. Прогулка по массиву………………………………………………………………………………………………. 132

Раздел 4. Функции в PHP………………………………………………………………. 135

Глава 12. Полезные стандартные функции. Работа с датой………………….. 137

12.1. Генератор случайных чисел………………………………………………………………………………………….. 137

12.2. Дата и время……………………………………………………………………………………………………………………. 138

12.2.1. Кратко о timestamp…………………………………………………………………………………………………… 138

12.2.2. Функции strtotime() и checkdate()……………………………………………………………………………… 138

12.2.3. Вывод даты……………………………………………………………………………………………………………….. 139

12.2.4. Использование type=”date”……………………………………………………………………………………… 141

12.2.5. Функция checkdate(): проверка даты на корректность………………………………………….. 141

12.2.6. Класс DateTime: удобная работа с датой и временем…………………………………………… 143

Создание даты по строке………………………………………………………………………………………………… 143

Вычисление количества дней между двумя датами…………………………………………………….. 144

Работа с временнми интервалами……………………………………………………………………………….. 145

12.2.7. Настройка PHP для корректной работы с датами…………………………………………………. 146

12.3. Математические функции………………………………………………………………………………………………. 146

Глава 13. Функции для работы со строками………………………………………… 148

13.1. Основные строковые функции……………………………………………………………………………………….. 148

13.2. Специальные функции замены………………………………………………………………………………………. 152

13.3. Функции преобразования строки………………………………………………………………………………….. 154

13.4. Функции преобразования кодировок……………………………………………………………………………. 156

13.5. Функции для работы с отдельными символами строки. Разыменовывание строки…. 157

13.6. Функция md5() и другие функции шифрования/хеширования. API хеширования
паролей……………………………………………………………………………………………………………………………. 158

13.7. Функции explode() и implode(): работа с подстроками………………………………………………… 159

13.8. Статистические функции……………………………………………………………………………………………….. 160

13.9. Функции вывода текста………………………………………………………………………………………………….. 161

13.10. Установка локали…………………………………………………………………………………………………………. 163

13.11. Форматирование чисел и денежных величин…………………………………………………………….. 164

13.12. Преобразование систем счисления……………………………………………………………………………… 164

13.13. Строки в PHP 7/8…………………………………………………………………………………………………………… 165

Глава 14. Работаем с файлами и каталогами………………………………………… 166

14.1. Права доступа в UNIX……………………………………………………………………………………………………. 166

14.2. Чтение файла…………………………………………………………………………………………………………………… 168

14.2.1. Функции fopen() и fread()………………………………………………………………………………………….. 169

14.2.2. Функция file(): построчное чтение файла……………………………………………………………….. 171

14.2.3. Чтение всего файла: функция file_get_contents()……………………………………………………. 172

14.3. Запись файла…………………………………………………………………………………………………………………… 172

14.4. Создание временных файлов…………………………………………………………………………………………. 173

14.5. Работа с CSV-файлами…………………………………………………………………………………………………… 173

14.6. Специальные функции для работы с файлами…………………………………………………………….. 175

14.6.1. Функции для работы с именами файлов…………………………………………………………………. 175

14.6.2. Работа с правами доступа……………………………………………………………………………………….. 176

14.6.3. Копирование, переименование и удаление файлов………………………………………………. 177

14.6.4. Время доступа к файлу…………………………………………………………………………………………….. 178

14.6.5. Другие полезные функции………………………………………………………………………………………… 178

14.7. Совместный доступ к файлу………………………………………………………………………………………….. 179

14.8. Функции для работы с каталогами……………………………………………………………………………….. 180

Глава 15. Вывод графических изображений средствами PHP……………….. 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. Работа с сетевыми сокетами в PHP. Сетевые функции…………. 199

16.1. Еще раз о том, что такое сокет………………………………………………………………………………………. 199

16.2. Функция fsockopen()………………………………………………………………………………………………………… 199

16.3. Примеры работы с сокетами………………………………………………………………………………………….. 200

16.3.1. Работаем с протоколом HTTP…………………………………………………………………………………. 200

16.3.2. Отправка почты с использованием сокетов……………………………………………………………. 202

16.3.3. Простейший клиент/сервер………………………………………………………………………………………. 204

16.4. Блокирующий и неблокирующий режимы сокета……………………………………………………….. 206

16.5. DNS-функции…………………………………………………………………………………………………………………… 206

Глава 17. Собственные функции………………………………………………………….. 208

17.1. Зачем нужны собственные функции?……………………………………………………………………………. 208

17.2. Особенности функций в PHP………………………………………………………………………………………….. 208

17.3. Объявление функции………………………………………………………………………………………………………. 209

17.4. Области видимости функции…………………………………………………………………………………………. 211

17.5. Вложенность функций……………………………………………………………………………………………………. 211

17.6. Переменное число аргументов………………………………………………………………………………………. 213

17.7. Передача массивов в качестве параметров………………………………………………………………….. 214

17.8. Передача аргументов по ссылке……………………………………………………………………………………. 216

17.9. Генераторы……………………………………………………………………………………………………………………… 217

17.10. Полезные примеры……………………………………………………………………………………………………….. 219

17.10.1. Получение реального IP-адреса клиента……………………………………………………………… 219

17.10.2. Генерирование сложного пароля………………………………………………………………………….. 220

17.10.3. Рекурсивное удаление каталога……………………………………………………………………………. 220

17.10.4. Отправка файла в браузер……………………………………………………………………………………… 221

17.10.5. Сжатие файла «на лету»………………………………………………………………………………………… 222

Раздел 5. База данных MySQL…………………………………………………….. 225

Глава 18. Установка MySQL на VDS……………………………………………………. 227

18.1. Несколько вводных слов………………………………………………………………………………………………… 227

18.2. Установка сервиса MySQL…………………………………………………………………………………………….. 227

18.3. Настройка MySQL………………………………………………………………………………………………………….. 228

18.4. Создание MySQL-пользователя…………………………………………………………………………………….. 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. Расширение mysqli………………………………………………………………………………………………………….. 249

20.2.1. Подключение к серверу MySQL………………………………………………………………………………. 249

20.2.2. Передача запросов серверу……………………………………………………………………………………… 250

20.2.3. Метод real_escape_string()………………………………………………………………………………………. 252

20.3. Расширение PDO……………………………………………………………………………………………………………… 252

20.3.1. Соединение с базой данных…………………………………………………………………………………….. 252

20.3.2. Выполнение запросов и чтение результата……………………………………………………………. 254

20.3.3. Получение данных……………………………………………………………………………………………………. 256

20.3.4. Особенности использования операторов LIKE, LIMIT и IN…………………………………… 257

20.3.5. Имена таблиц и полей при работе с PDO……………………………………………………………….. 258

20.3.6. Запросы вставки и обновление………………………………………………………………………………… 258

Глава 21. Работа с базой данных в Laravel…………………………………………… 260

21.1. Способы работы с базой данных………………………………………………………………………………….. 260

21.2. Сырые (прямые) запросы……………………………………………………………………………………………….. 261

21.3. Конструктор запросов……………………………………………………………………………………………………. 262

21.4. Система Eloquent…………………………………………………………………………………………………………….. 265

Раздел 6. Инструменты для создания
сложных проектов……………………………………………………………………… 269

Глава 22. Разработка собственного шаблонизатора……………………………… 271

22.1. Организация файлов и каталогов проекта……………………………………………………………………. 271

22.2. Выносим параметры в отдельный файл……………………………………………………………………….. 273

22.3. Подключение дополнительных файлов………………………………………………………………………… 274

22.3.1. Инструкции include и require…………………………………………………………………………………… 274

22.3.2. Альтернативный способ подключения сценариев…………………………………………………. 275

22.3.3. Инструкции include_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. Директивы @for, @foreach и @while………………………………………………………………………. 284

23.3.3. Директивы @forelse и @endforelse………………………………………………………………………….. 284

23.4. Включение представлений. Директива @include………………………………………………………… 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. Служебное слово final……………………………………………………………………………………………………. 295

24.8. Клонирование объектов…………………………………………………………………………………………………. 296

24.9. Константы — члены класса…………………………………………………………………………………………… 297

24.10. Статические члены класса…………………………………………………………………………………………… 297

24.11. Оператор instanceof……………………………………………………………………………………………………… 298

24.12. Итераторы……………………………………………………………………………………………………………………… 298

24.13. Пространства имен……………………………………………………………………………………………………….. 299

24.13.1. Общая концепция……………………………………………………………………………………………………. 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. Блок finally………………………………………………………………………………………………………………………. 315

26.4. Глобальный обработчик исключений………………………………………………………………………….. 317

Глава 27. Контроль версий…………………………………………………………………… 318

27.1. Выбор системы контроля версий…………………………………………………………………………………… 318

27.2. Первоначальная настройка…………………………………………………………………………………………… 319

27.3. Создание нового репозитория или получение его по существующему URL-адресу.. 319

27.4. Операции с файлами. Перемещение и удаление версий файлов репозитория………….. 320

27.5. Сохранение и восстановление незавершенных изменений………………………………………… 321

27.6. Просмотр изменений и создание коммитов (фиксация изменений)…………………………….. 321

27.7. Коллективная работа……………………………………………………………………………………………………… 322

27.8. Просмотр и изучение истории изменений файлов проекта…………………………………………. 322

27.9. Откат изменений. Удаление ошибок и корректировка созданной истории………………. 323

27.10. Синхронизация с удаленным репозиторием.
Регистрация удаленного репозитория и обмен изменениями……………………………………. 323

Глава 28. Тестирование PHP-сценариев……………………………………………….. 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. Некоторые теоретические предпосылки………………………………………………………………… 342

29.4.2. Пример практической реализации………………………………………………………………………….. 345

29.5. Проблемы при загрузке файлов…………………………………………………………………………………….. 352

Глава 30. Использование FTP-функций……………………………………………….. 353

30.1. Функции для работы с FTP…………………………………………………………………………………………….. 353

30.2. Примеры использования FTP-функций…………………………………………………………………………. 356

Глава 31. Отправка и прием почты………………………………………………………. 359

31.1. Отправка почты средствами PHP: функция mail()……………………………………………………….. 359

31.1.1. Использование функции…………………………………………………………………………………………… 359

31.1.2. Подробно о настройке сервера……………………………………………………………………………….. 360

31.2. Класс PHPMailer. Разработка сценария автоматической рассылки прайс-листа…… 361

31.3. Получение писем по протоколу POP3…………………………………………………………………………… 365

31.4. Получение писем по протоколу IMAP………………………………………………………………………….. 367

Глава 32. Введение в PEAR………………………………………………………………….. 370

32.1. Серьезные проекты и PEAR……………………………………………………………………………………………. 370

32.2. Пример использования класса DB…………………………………………………………………………………. 372

Глава 33. Импорт и экспорт данных…………………………………………………….. 375

33.1. Импорт прайс-листов из формата CSV в базу данных MySQL………………………………….. 375

33.2. Преобразование файлов Excel в CSV с помощью PHP. Импорт прайсов из Excel…….. 379

33.3. Работа с XML-файлами………………………………………………………………………………………………….. 380

33.3.1. Парсинг XML-файла…………………………………………………………………………………………………. 380

33.3.2. Генерирование XML-файла…………………………………………………………………………………….. 382

Глава 34. Работаем с MP3…………………………………………………………………….. 384

34.1. Формат MP3…………………………………………………………………………………………………………………….. 384

34.2. Библиотека PEAR……………………………………………………………………………………………………………. 385

34.3. Вывод ID3-тегов……………………………………………………………………………………………………………… 386

34.4. Редактирование ID3-тегов……………………………………………………………………………………………… 388

34.5. Удаление тега………………………………………………………………………………………………………………….. 388

Глава 35. Расширение cURL: практические примеры………………………….. 390

35.1. Этот загадочный cURL…………………………………………………………………………………………………… 390

35.2. Авторизация на сайте и загрузка файла после нее……………………………………………………… 392

35.3. Замена функции file_get_contents() с помощью cURL…………………………………………………. 395

35.4. Загрузка файла через FTP………………………………………………………………………………………………. 395

35.5. Проверка доступности сайта…………………………………………………………………………………………. 396

Раздел 8. Введение в Laravel…………………………………………………….. 399

Глава 36. Фреймворк или чистый PHP-код?………………………………………… 401

36.1. Что такое фреймворк?…………………………………………………………………………………………………….. 401

36.2. Обзор популярных PHP-фреймворков…………………………………………………………………………… 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. CodeIgniter…………………………………………………………………………………………………………………. 404

Глава 37. Установка Laravel на VDS с Ubuntu Linux…………………………….. 405

37.1. Выбор места для установки…………………………………………………………………………………………… 405

37.2. Установка необходимого ПО…………………………………………………………………………………………. 405

37.2.1. Установка веб-сервера Apache………………………………………………………………………………… 405

37.2.2. Установка PHP и его расширений…………………………………………………………………………… 407

37.2.3. Установка Laravel…………………………………………………………………………………………………….. 409

Глава 38. Определяем маршруты…………………………………………………………. 412

38.1. Запросы протокола HTTP……………………………………………………………………………………………… 412

38.2. Модель. Представление. Контроллер…………………………………………………………………………… 413

38.3. Простейшие маршруты. Сопоставление маршрута с контроллером………………………… 414

38.4. Параметры в маршрутах……………………………………………………………………………………………….. 415

38.5. Имена маршрутов…………………………………………………………………………………………………………… 416

38.6. Префиксы маршрутов…………………………………………………………………………………………………….. 417

38.7. Маршруты новостной страницы…………………………………………………………………………………… 417

Глава 39. Пишем контроллер……………………………………………………………….. 418

39.1. Создание контроллера…………………………………………………………………………………………………… 418

39.2. Простой метод: List()………………………………………………………………………………………………………. 419

39.3. Методы с параметрами: View() и GetArchiveContent()………………………………………………… 420

39.4. Обработка POST-запроса………………………………………………………………………………………………. 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.1.4. Метод download()……………………………………………………………………………………………………… 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-инъекции……………………………………………………………………………………………………………. 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.1. Веб-сервер Apache2………………………………………………………………………………………………….. 452

44.3.2. Веб-сервер Ngnix……………………………………………………………………………………………………….. 453

Глава 45. Защита PHP с помощью конфигурационного файла…………….. 454

45.1. Конфигурационный файл php.ini………………………………………………………………………………….. 454

45.2. Отключение потенциально опасных функций……………………………………………………………… 455

45.3. Рекомендованные значения некоторых конфигурационных директив……………………… 455

Раздел 10. Полезные сведения………………………………………………….. 457

Глава 46. Устанавливаем визуальный редактор Summernote……………….. 459

46.1. Знакомство с редактором………………………………………………………………………………………………. 459

46.2. Интеграция Summernote и Laravel………………………………………………………………………………… 459

Глава 47. Работа с MongoDB средствами PHP………………………………………. 462

47.1. Что такое MongoDB?………………………………………………………………………………………………………. 462

47.2. Настройка интерпретатора PHP…………………………………………………………………………………… 463

47.3. Добавление данных в MongoDB……………………………………………………………………………………. 465

47.4. Чтение информации из базы данных…………………………………………………………………………….. 467

47.5. Преобразование объекта в массив………………………………………………………………………………… 469

Приложения…………………………………………………………………………………… 473

Приложение 1. Шаблоны проектирования…………………………………………… 475

П1.1. Введение в шаблоны проектирования………………………………………………………………………….. 475

П1.2. Шаблон «Стратегия»……………………………………………………………………………………………………… 476

П1.3. Шаблон «Адаптер»………………………………………………………………………………………………………… 477

П1.4. Шаблон «Фабрика»………………………………………………………………………………………………………… 478

П1.5. Шаблон «Одиночка»………………………………………………………………………………………………………. 479

Приложение 2. Профайлинг…………………………………………………………………. 481

П2.1. Что такое профайлинг?………………………………………………………………………………………………….. 481

П2.2. Типы профайлеров…………………………………………………………………………………………………………. 481

П2.3. Профайлер Xdebug…………………………………………………………………………………………………………. 482

П2.4. XHProf……………………………………………………………………………………………………………………………… 482

Приложение 3. Виртуальная машина HHVM……………………………………….. 485

П3.1. Что такое HHVM?………………………………………………………………………………………………………….. 485

П3.2. Подойдет ли HHVM именно для вас?…………………………………………………………………………… 486

П3.3. Установка HHVM…………………………………………………………………………………………………………… 487

П3.4. Настройка HHVM………………………………………………………………………………………………………….. 487

П3.5. Язык Hack……………………………………………………………………………………………………………………….. 489

Приложение 4. Описание электронного архива……………………………………. 490

Предметный указатель…………………………………………………………………………. 492

Денис_Николавич_Колисниченко

Колисниченко Денис Николаевич, инженер-программист и системный администратор. Имеет богатый опыт эксплуатации и создания локальных сетей от домашних до уровня предприятия, разработки приложений для различных платформ. Автор более 50 книг компьютерной тематики, в том числе “Microsoft Windows 10. Первое знакомство”, “Самоучитель Microsoft Windows 8”, “Программирование для Android 5. Самоучитель”, “PHP и MySQL. Разработка веб-приложений”, “Планшет и смартфон на базе Android для ваших родителей”, “”Linux. От новичка к профессионалу” и др.

Summary
Aggregate Rating
3 based on 1 votes
Добавить комментарий