PHP и MySQL. 25 уроков для начинающих

PHP и MySQL. 25 уроков для начинающих

PHP и MySQL. 25 уроков для начинающих
Автор: Дронов Владимир Александрович
Дата выхода: 2021
Издательство: БХВ-Петербург
Количество страниц: 434
Размер файла: 26,8 МБ
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы  Дополнительные материалы 

Введение....14

Динамические веб-сайты....14

Почему MySQL и РНР?....15

Чему научит эта книга?....15

Что вам понадобится?....16

Типографские соглашения....17

ЧАСТЬ I. ЯЗЫК РНР....20

Урок 1. Основы РНР....22

1.1. Экспресс-курс РНР-программирования....22

1.1.1. Программа. Выражения....22

1.1.2. Числа, переменные, операторы, функции, строки, типы данных и вывод результатов....23

1.1.3. Написание РНР-приложений. Наше первое серверное веб-приложение....26

Упражнение 1.1....27

Сделайте сами....29

1.1.4. Массивы, циклы, условия и логические величины....30

Упражнение 1.2....32

Сделайте сами....34

1.1.5. Получение данных от пользователя и условные выражения....35

Упражнение 1.3....36

Сделайте сами....38

1.1.6. Программные модули и включения....38

Упражнение 1.4....39

1.2. Ошибки в РНР-коде....41

1.3. Комментарии....42

1.4. Способы набора РНР-кода....43

1.5. Консоль РНР....44

Урок 2. Работа с данными разных типов....45

2.1. Числа: целые и вещественные....45

2.1.1. Запись чисел....45

2.1.2. Действия над числами....45

Арифметические действия....45

Алгебраические действия....47

Тригонометрические функции....48

Побитовые операции....49

Прочие операции....49

2.2. Строки....50

2.2.1. Запись строк....51

2.2.2. Обработка переменных в строках....52

2.2.3. Действия над строками....53

Конкатенация и вычисление длин строк....53

Поиск и извлечение подстрок в строках....53

Преобразование строк....54

Быстрая обработка строк в кодировке ASCII....55

2.3. Логические величины и написание условий....56

2.3.1. Операторы сравнения....56

2.3.2. Логические операторы....57

2.4. Временные отметки....58

2.4.1. Создание временных отметок....58

2.4.2. Получение компонентов даты и времени из временной отметки....59

2.5. Значение NULL....59

2.6. Типы данных....60

2.6.1. Определение типа значения....60

2.6.2. Преобразование типов....61

Неявное преобразование типов....61

Явное преобразование типов....63

2.6.3. Строгое сравнение....64

2.7. Вычисление выражений, записанных в строках....65

2.8. Упражнение. Доработка веб-приложения convertor3.php....65

Сделайте сами....66

Урок 3. Хранение данных: переменные, ссылки и константы....67

3.1. Переменные и работа с ними....67

3.1.1. Имена переменных....67

3.1.2. Область видимости переменной....68

3.1.3. Присваивание....69

Простое присваивание....69

Комбинированное присваивание....69

Копирование значения при присваивании. Значащие типы данных....70

3.1.4. Переменные переменных....70

3.1.5. Проверка и удаление переменных....71

3.2. Ссылки....72

3.3. Константы....72

Урок 4. Массивы....74

4.1. Индексированные массивы....74

4.1.1. Создание массивов....74

4.1.2. Работа с элементами массивов....75

4.2. Ассоциативные массивы....76

4.3. Комбинированные массивы....77

4.4. Вложенные массивы....77

4.5. Работа с массивами....78

4.6. Упражнение. Вывод описаний к изображениям в фотогалерее....81

4.7. Упражнение. Веб-страница для просмотра изображений....82

Сделайте сами....84

Урок 5. Управляющие конструкции....85

5.1. Условные выражения и операторы....85

5.1.1. Простое условное выражение....85

5.1.2. Множественное условное выражение....86

5.1.3. Условные операторы....86

5.2. Блоки....87

5.3. Выражения выбора. Прерывание....87

5.4. Циклы....90

5.4.1. Цикл со счетчиком....90

5.4.2. Цикл с предусловием....91

5.4.3. Цикл с постусловием....92

5.4.4. Цикл по массиву....93

5.4.5. Прерывание цикла....93

5.4.6. Прерывание текущей итерации цикла....94

5.5. Безусловный переход....95

5.6. Завершение работы модуля....95

5.7. Упражнение. Заставляем приложение convertorS.php соблюдать правила русского языка....95

Сделайте сами....98

5.8. Упражнение. Реализуем единую точку входа на веб-сайт....98

5.8.1. Теоретическое обоснование....98

5.8.2. Собственно упражнение....99

Урок 6. Функции....102

6.1. Объявление и вызов функций....102

6.1.1. Область видимости функций....103

6.1.2. Локальные, глобальные и статические переменные....104

6.1.3. Указание типов для параметров и возвращаемого результата....106

6.2. Параметры функций: особые случаи....107

6.2.1. Необязательные параметры....107

6.2.2. Функции с произвольным количеством параметров....107

6.2.3. Параметры с изменяемыми значениями. Передача по ссылке....108

6.3. Переменные функций....109

6.4. Анонимные функции....109

6.5. Рекурсия....111

6.6. Упражнение. Объявляем функцию, определяющую падежное окончание по числу....112

Сделайте сами....113

Урок 7. Объектное программирование: классы и объекты....114

7.1. Введение в объектное программирование....114

7.2. Объявление классов....115

7.2.1. Объявление свойств и методов....116

7.2.2. Конструкторы и деструкторы....117

7.2.3. Статические свойства и методы....118

7.2.4. Константы классов....119

7.3. Наследование классов....120

7.3.1. Перекрытие и переопределение методов....121

7.3.2. Решение проблем с наследованием статических методов....122

7.3.3. Абстрактные методы и классы....123

7.3.4. Окончательные методы и классы....124

7.4. Присваивание объектов. Ссылочные типы данных....125

7.5. Работа с объектами и классами....126

7.5.1. Работа с объектами....126

7.5.2. Работа с классами....127

7.6. Магические методы....128

7.7. Автозагрузка классов....130

Урок 8. Объектное программирование: трейты, интерфейсы и пространства имен....132

8.1. Трейты....132

8.1.1. Объявление и использование трейтов....132

8.1.2. Разрешение конфликтов....133

Простые случаи: автоматическое разрешение конфликтов....133

Сложные случаи: разрешение конфликтов вручную....135

8.1.3. Дополнительные инструменты для работы с трейтами....136

8.2. Интерфейсы....136

8.2.1. Объявление и реализация интерфейсов....137

8.2.2. Наследование интерфейсов....138

8.2.3. Дополнительные инструменты для работы с интерфейсами....138

8.3. Пространства имен....139

8.3.1. Объявление пространств имен....139

8.3.2. Обращение к сущностям, объявленным в других пространствах имен....140

Прямое обращение по пути....140

Выполнение импорта....141

8.3.3. Дополнительные инструменты для работы с пространствами имен....143

Урок 9. Архитектура модель-шаблон-контроллер....144

9.1. Введение в архитектуру модель-шаблон-контроллер....144

9.2. Упражнение. Пишем класс модели и реализуем автозагрузку классов....146

Сделайте сами....148

9.3. Упражнение. Пишем контроллер....148

9.4. Упражнение. Создаем шаблоны....151

Урок 10. Генераторы и итераторы....155

10.1. Генераторы....155

10.2. Итераторы....156

10.2.1. Интерфейс Iterator....156

10.2.2. Интерфейс Countable....158

10.3. Упражнение. Превращаем модель в итерируемый класс....158

Урок 11. Регулярные выражения....160

11.1. Введение в регулярные выражения....160

11.1.1. Написание регулярных выражений....160

11.1.2. Поиск с применением регулярных выражений....161

11.1.3. Тестирование регулярных выражений....161

11.2. Литералы регулярных выражений....163

11.2.1. Разделители....163

11.2.2. Метасимволы....163

11.2.3. Поднаборы....164

11.2.4. Вариант....164

11.2.5. Квантификаторы....165

11.2.6. Подквантификатор. Жадный и щедрый режимы поиска....166

11.2.7. Группы и обратные ссылки....167

11.2.8. Обычные символы....168

11.3. Поиск и обработка фрагментов, совпадающих с регулярными выражениями....168

11.3.1. Обычный режим поиска....168

11.3.2. Глобальный поиск....170

11.3.3. Многострочный поиск....171

11.3.4. Замена совпавших фрагментов....172

11.3.5. Разбиение строк....173

11.4. Упражнение. Пишем маршрутизатор на основе регулярных выражений....174

Урок 12. Обработка ошибок. Исключения....176

12.1. Обработчики исключений....176

12.2. Классы исключений....177

12.3. Генерирование исключений....178

12.4. Обработчик исключений по умолчанию....179

12.5. Упражнение. Создаем веб-страницы с сообщениями об ошибках....180

ЧАСТЬ II. СИСТЕМА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ MYSQL....186

Урок 13. Базы данных....188

13.1. Введение в реляционные базы данных....189

13.1.1. Таблицы, поля и записи....189

13.1.2. Индексы....191

13.1.3. Связи....192

13.1.4. Разграничение доступа....194

13.1.5. Серверные СУБД....195

13.2. Серверные СУБД MySQL и MariaDB....195

13.3. Программа для работы с базами данных phpMyAdmin....197

13.3.1. Открытие phpMyAdmin и выполнение входа....197

13.3.2. Навигация в phpMyAdmin....198

13.3.3. Работа с базой данных....199

Создание базы данных....199

Переименование базы данных....200

Изменение кодировки у базы данных....200

Удаление базы данных....200

13.3.4. Работа с таблицами....201

Создание таблицы....201

Переименование таблицы....203

Удаление таблицы....204

13.3.5. Работа с полями....204

Добавление поля в таблицу....204

Правка поля....204

Удаление поля....205

13.3.6. Работа с индексами....205

Добавление индекса в таблицу....205

Правка индекса....206

Удаление индекса....206

13.3.7. Работа со связями....207

Создание связи....207

Правка связи....208

Удаление связи....208

13.3.8. Работа с пользователями....208

Создание пользователя....208

Правка привилегий пользователя....212

Изменение пароля пользователя....213

Правка основных сведений о пользователе....213

Удаление пользователя....214

13.3.9. Работа с записями....215

Добавление записей....215

Правка записей....216

Удаление записей....217

13.3.10. Экспорт и импорт баз данных....217

Экспорт базы данных....217

Импорт базы данных....218

13.4. Упражнение. Создаем базу данных для веб-сайта фотогалереи....218

Урок 14. Написание запросов к базам данных. Язык SQL....222

14.1. Выполнение SQL-запросов в phpMyAdmin....222

14.2. Выборка записей....224

14.2.1. Простая выборка записей....224

14.2.2. Связывание таблиц и выборка полей из связанных записей....225

14.2.3. Фильтрация записей....227

14.2.4. Сортировка записей....231

14.2.5. Выборка заданного количества записей....232

14.3. Вычисления над группами записей....232

14.3.1. Агрегатные функции....232

14.3.2. Группировка записей....233

14.3.3. Фильтрация групп....234

14.4. Вложенные запросы....234

14.5. Добавление, правка и удаление записей....236

14.5.1. Добавление записей....236

14.5.2. Правка записей....237

14.5.3. Удаление записей....237

Урок 15. Выполнение запросов к базам данных MySQL средствами РНР....238

15.1. Соединение с базой данных....238

15.2. Выполнение простых запросов....239

15.2.1. Простые запросы на выборку записей....239

15.2.2. Простые запросы на изменение данных....241

15.3. Параметризованные запросы....241

15.3.1. Подготовка параметризованного запроса....241

15.3.2. Задание значений параметров в параметризованном запросе....242

15.3.3. Выполнение запроса....243

15.3.4. Получение результатов....243

15.4. Дополнительные инструменты....245

15.5. Обработка ошибок при работе с базами данных....246

15.6. Упражнение. Пишем базовый класс модели, работающей с базой данных....246

15.7. Упражнение. Создаем главную веб-страницу и веб-страницу категории....252

Сделайте сами....256

15.8. Упражнение. Реализуем пагинацию....257

15.9. Упражнение. Реализуем фильтрацию изображений....262

Сделайте сами....264

ЧАСТЬ III. ПРАКТИЧЕСКОЕ РНР-ПРОГРАММИРОВАНИЕ....266

Урок 16. Обработка клиентских запросов, генерирование ответов и включение модулей....268

16.1. Средства для обработки клиентских запросов....268

16.1.1. Получение данных, отправленных из веб-форм....268

16.1.2. Получение сведений о клиентском запросе и веб-сервере....268

16.2. Вывод данных....269

16.2.1. Простой вывод данных....269

16.2.2. Форматированный вывод данных....270

Форматированный вывод строк и чисел....270

Форматированный вывод временных отметок....272

16.2.3. Преобразование текста к виду, пригодному для вставки в HTML-код....273

16.3. Упражнение. Форматируем временные отметки....274

Сделайте сами....275

16.4. Задание заголовков и состояния ответа....275

16.4.1. Перенаправление....276

16.5. Упражнение. Задаем состояния ответа у веб-страниц сообщений об ошибках 404 и 503....276

Сделайте сами....277

16.6. Включение модулей....277

Урок 17. Обработка данных, введенных в веб-формы....278

17.1. Элементы управления HTML и отправляемые ими данные....278

17.2. Валидация и нормализация данных....280

17.2.1. Валидация данных....280

17.2.2. Нормализация данных....284

17.3. Упражнение. Реализуем в базовом классе модели добавление, правку и удаление записей....286

17.4. Упражнение. Создаем базовый класс формы....289

17.5. Упражнение. Реализуем добавление комментариев....294

17.6. Упражнение. Реализуем правку и удаление комментариев....298

Сделайте сами....301

Урок 18. Работа с файлами и папками....302

18.1. Получение сведений о текущем программном модуле....302

18.2. Работа с файлами....302

18.2.1. Получение сведений о файле....302

18.2.2. Манипуляции с файлами....304

18.2.3. Чтение и запись....304

18.3. Работа с папками....305

18.3.1. Получение сведений о папке....305

18.3.2. Манипуляции с папками....305

18.4. Получение сведений о дисках....306

18.5. Сохранение файлов, отправленных из веб-формы....307

18.6. Упражнение. Реализуем добавление, правку и удаление изображений....310

Сделайте сами....316

Урок 19. Работа с графикой....318

19.1. Создание и открытие изображений....318

19.1.1. Создание нового изображения....318

19.1.2. Открытие существующего изображения....318

19.2. Рисование фигур....319

19.2.1. Создание цветов для фигур....319

19.2.2. Рисование точек....320

19.2.3. Рисование линий....320

19.2.4. Рисование прямоугольников....321

19.2.5. Рисование эллипсов....322

19.2.6. Рисование полигонов....323

19.2.7. Рисование кривых....324

19.2.8. Закраска областей изображения....325

19.2.9. Задание толщины и стиля линий....326

19.2.10. Вывод текста....327

19.3. Изменение размеров и копирование изображений....328

19.3.1. Изменение размеров изображения....328

19.3.2. Копирование одного изображения в другое....329

19.4. Сохранение изображения....330

19.5. Удаление изображения....330

19.6. Получение сведений об изображении....330

19.7. Упражнение. Реализуем создание и вывод миниатюр....331

Урок 20. Cookie и сессии....335

20.1. Cookie....335

20.1.1. Запись данных в cookie....335

20.1.2. Получение данных, сохраненных в cookie....336

20.2. Сессии....337

20.2.1. Запуск, проверка состояния и использование сессии....337

20.2.2. Удаление сессии и сохраненных в ней данных....338

Урок 21. Базовые средства безопасности. Разграничение доступа....339

21.1. Реализация разграничения доступа....339

21.2. Безопасное хранение паролей. Хэши....340

21.3. Упражнение. Реализуем вход и выход....342

21.4. Упражнение. Защищаем веб-сайт....348

21.5. Упражнение. Создаем веб-страницу регистрации....354

21.6. Упражнение. Реализуем правку и удаление пользователей....357

Сделайте сами....360

Урок 22. Отправка электронной почты....361

22.1. Класс SendMailSmtpClass....361

22.2. Упражнение. Реализуем отправку оповещений о новых комментариях....363

Урок 23. Усиленные меры безопасности....368

23.1. Перевод веб-сайта на протокол HTTPS....368

23.2. Защита от атак типа CSRF....369

23.3. Упражнение. Противодействуем атакам CSRF....371

23.4. Двухэтапная регистрация пользователей....374

23.5. Упражнение. Делаем двухэтапную регистрацию....375

Урок 24. Веб-службы REST....380

24.1. Формат JSON и его поддержка в РНР....380

24.2. Стиль REST....382

24.2.1. Решение проблемы с передачей данных HTTP-методами PUT, РАТСН и DELETE. Подмена НТТР-метода....384

24.3. Программирование фронтенда....385

24.3.1. Получение данных....385

24.3.2. Добавление фрагмента данных....386

24.3.3. Правка фрагмента данных....387

24.3.4. Удаление фрагмента данных....387

24.3.5. Реализация разграничения доступа....388

24.4. Упражнение. Пишем бэкенд....389

Урок 25. Настройки РНР....399

25.1. Включение и отключение расширений РНР....400

25.2. Настройки отправки файлов на сервер....401

25.3. Настройки сессий....401

25.4. Настройки вывода сообщений об ошибках....402

25.5. Настройки ограничения ресурсов....403

Заключение....404

ПРИЛОЖЕНИЯ....406

Приложение 1. Приоритет операторов....408

Приложение 2. Пакет хостинга ХАМРР....410

П2.1. Установка пакета ХАМРР....410

П2.2. Панель управления ХАМРР. Запуск и остановка веб-сервера и СУБД....415

П2.2.1. Указание языка при первом запуске....415

П2.2.2. Окно панели управления ХАМРР....415

П2.2.3. Запуск веб-сервера и СУБД....415

П2.2.4. Проверка работоспособности веб-сервера и СУБД....416

П2.2.5. Остановка веб-сервера и СУБД....417

П2.3. Использование веб-сервера....418

П2.3.1. Тестирование веб-сайта с применением ХАМРР....418

П2.3.2. Просмотр журналов работы веб-сервера и РНР....418

П2.4. Настройка РНР и решение проблем....419

П2.4.1. Настройка РНР....419

П2.4.2. Отключение кэширования файлов веб-обозревателем....419

Приложение 3. Описание электронного архива....422

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

В книге 25 иллюстрированных уроков и более 30 практических упражнений. В доступной и наглядной форме, на сквозном примере рассказано о программировании динамических веб-сайтов на языке PHP с применением СУБД MySQL и MariaDB. Описывается программное генерирование веб-страниц, получение данных от пользователей и проверка их на корректность, работа с файлами, программное рисование графики, обработка cookie и сессий, отправка электронной почты. Рассмотрена архитектура «модель-шаблон-контроллер» и структурирование кода для дальнейшего сопровождения сайта. Рассказано о мерах защиты сайта: разграничение доступа, перевод на безопасный протокол HTTPS, защита от атак, шифрование данных. Дан краткий курс программирования веб-служб REST. Сквозной пример разработки веб-сайта фотогалереи и PHP-фреймворка поможет при построении собственных сайтов. Электронное приложение-архив на сайте издательства содержит коды всех примеров.

Вы узнаете, как:

  • генерировать веб-страницы программно,
  • получать и проверять на корректность данные, отправленные посетителем,
  • выводить страницы с сообщениями об ошибках, применяя исключения,
  • создавать базы данных MySQL и MariaDB в программе phpMyAdmin,
  • программно рисовать графику,
  • отправлять электронные письма,
  • защитить сайт от несанкционированного проникновения,
  • шифровать конфиденциальные данные,
  • перевести сайт на безопасный протокол HTTPS,
  • противодействовать сетевым атакам,
  • писать веб-службы REST,
  • разделить код на модели, шаблоны и контроллеры,
  • написать свой PHP-фреймворк,
  • создать полнофункциональный веб-сайт.

Похожее:

Список отзывов:

Нет отзывов к книге.