На главную | Где купить | Авторам и заказчикам | Вакансии | Реклама | Издательство | Каталог | Статьи наших авторов | Контакты | Прайс листы

PHP и MySQL. Разработка веб-приложений (6-изд.)

Автор Колисниченко Д.
Название PHP и MySQL. Разработка веб-приложений (6-изд.)
Серия Профессиональное программирование
ISBN 978-5-9775-3835-0
Формат 70×100/16, мягкая обложка
Объем 640
Тематика
Оптовая цена
    Вернуться к описанию книги

Полное содержание

Предисловие 1
Что нового в 6-м издании? 1
Немного истории 2
PHP 7, или что случилось с PHP 6? 3
Основные нововведения в PHP версии 7 4
Улучшена производительность 4
Удалены старые расширения и SAPI 4
Изменения в синтаксисе языка 4
Новые возможности 5
Измененные функции 6
Новые функции 6
Поддержка читателей 6

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

7

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

9

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

11
1.1. Нужно ли устанавливать программное обеспечение? 11
1.2. Выбор PHP-редактора и FTP-клиента 14
1.3. Установка связки Apache + PHP + MySQL в Windows 17
1.3.1. Для опытных пользователей: установка вручную 17
Установка веб-сервера Apache 17
Установка PHP 19
1.3.2. Установка для новичков (рекомендуется) 26
1.4. Установка Apache + PHP + MySQL в Linux 29
1.5. Конфликты с другим программным обеспечением 30
1.6. Несколько советов 31

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

33
2.1. Ваша первая программа 33
2.2. Запуск PHP-программы 35
2.3. Вывод текста без echo 35

Глава 3. Основы синтаксиса PHP

38
3.1. Переменные 38
3.1.1. Правила объявления переменных. Имена переменных 38
3.1.2. Типы данных переменных 39
3.1.3. Булевы переменные 40
3.1.4. Операции над переменными 41
3.1.5. Ссылки 42
3.2. Константы 43
3.3. Выражения и операции 47
3.3.1. Что такое выражение? 47
3.3.2. Арифметические операции 47
3.3.3. Логические выражения 48
3.3.4. Битовые операции 48
3.3.5. Приоритеты операций 49
3.3.6. Операторы эквивалентности == и === 50
3.3.7. Оператор ?? — сокращенная форма тернарной условной операции 51
3.3.8. Операции со строками 51
3.4. Условный оператор 52
3.5. Циклы 53
3.5.1. Цикл со счетчиком for 53
3.5.2. Цикл while 54
3.5.3. Цикл do-while 54
3.5.4. Принудительное завершение цикла и пропуск итерации 55
3.6. Оператор выбора switch-case 55

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

57

Глава 4. Методы GET и POST

59
4.1. Интерфейс CGI 59
4.2. Метод GET 61
4.3. Метод POST 61

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

63
5.1. Специальные переменные окружения CGI 63
5.2. Заголовки протокола HTTP 64
5.3. Коды ответов протокола HTTP 65

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

67
6.1. Создание простейшей формы и ее обработка в сценарии 67
6.2. Создание пользовательского интерфейса с помощью формы 70
6.2.1. Ввод текста. Теги INPUT и TEXTAREA 71
6.2.2. Зависимые и независимые переключатели 72
6.2.3. Списки выбора 73
6.2.4. Форма для передачи файлов 75
6.2.5. Кнопки 75
6.3. Проверка параметров формы 76
6.3.1. Проверка корректности e-mail 77
6.3.2. Проверка правильности номера банковской карты 78
6.3.3. Удаление лишних пробелов 79
6.4. Защита от спама с помощью формы CAPTCHA 80
6.5. Форма поиска в Яндексе 82

Глава 7. Запоминание параметров с помощью Cookies и сессий

84
7.1. Что такое Cookies и как с ними работать? 84
7.2. Механизм сессий 86
7.2.1. Сессии и Cookies: преимущества и недостатки 86
7.2.2. Для чего нужны сессии? 86
7.2.3. Как работает механизм сессий? 88
7.2.4. Обход Cookies 89
7.3. Массивы и Cookies 90

Глава 8. Не забываем о поисковой оптимизации

91
8.1. "Дружественные" интернет-адреса 91
8.2. Идентификаторы сеансов 94
8.3. Производительность сценария 94

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

97

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

99
9.1. Массив и список. Цикл foreach 99
9.2. Функции list() и array() 102
9.3. Удаление массива 104
9.4. Слияние массивов 104
9.5. Функция print_r() 106
9.6. Разыменовывание массива 107

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

109
10.1. Сортировка массивов 109
10.2. Функция sort() — сортировка списка 109
10.3. Функция asort() — сортировка массива по значениям 110
10.4. Функция ksort() — сортировка по ключам 111
10.5. Функции array_reverse() и shuffle() 112
10.6. Собственная функция сортировки 112
10.7. Натуральная сортировка 113

Глава 11. Особые операции над массивами

115
11.1. Добавление и удаление элементов массива 115
11.2. Упаковка переменных в массив и их извлечение 116
11.3. Получение части массива 118
11.4. Функции автоматического заполнения массива 118
11.5. Сравнение массивов 119
11.6. Полезные операции над массивом 120
11.6.1. Вычисление суммы и произведения всех элементов массива 120
11.6.2. Проверка существования элемента в массиве 120
11.6.3. Получение случайного элемента из массива 121
11.6.4. Удаление дубликатов из массива 121
11.6.5. Получение значений и ключей массива 122
11.6.6. Замена местами значений и ключей 122
11.6.7. Подсчет значений в массиве 122
11.6.8. Замена в массиве 123
11.6.9. Поиск в массиве 123
11.6.10. Прогулка по массиву 124

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

127

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

129
12.1. Генератор случайных чисел 129
12.2. Дата и время 130
12.2.1. Кратко о timestamp 130
12.2.2. Функции strtotime() и checkdate() 130
12.2.3. Вывод даты 131
12.3. Математические функции 133

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

135
13.1. Основные строковые функции 135
13.2. Специальные функции замены 138
13.3. Функции преобразования строки 140
13.4. Функции преобразования кодировок 142
13.5. Функции для работы с отдельными символами строки. Разыменовывание строки 143
13.6. Функция md5() и другие функции шифрования/хэширования. API хэширования паролей 144
13.7. Функции explode() и implode(): работа с подстроками 146
13.8. Статистические функции 146
13.9. Функции вывода текста 147
13.10. Установка локали 149
13.11. Форматирование чисел и денежных величин 150
13.12. Преобразование систем счисления 151
13.13. Строки в PHP 7 151

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

152
14.1. Права доступа в UNIX 152
14.2. Чтение файла 154
14.2.1. Функции fopen() и fread() 155
14.2.2. Функция file(): построчное чтение файла 157
14.2.3. Чтение всего файла: функция file_get_contents() 158
14.3. Запись файла 158
14.4. Создание временных файлов 159
14.5. Работа с CSV-файлами 159
14.6. Специальные функции для работы с файлами 162
14.6.1. Функции для работы с именами файлов 163
14.6.2. Работа с правами доступа 163
14.6.3. Копирование, переименование и удаление файлов 164
14.6.4. Время доступа к файлу 165
14.6.5. Другие полезные функции 166
14.7. Совместный доступ к файлу 166
14.8. Функции для работы с каталогами 167

Глава 15. Вывод графических изображений средствами PHP

169
15.1. Библиотека GD 169
15.1.1. Получение информации об изображении 169
15.1.2. Конвертирование графических форматов 172
15.1.3. Вывод текста поверх картинки. Задание цвета 174
15.1.4. Прозрачность 177
15.1.5. Рисование графических примитивов 178
15.1.6. Поворот изображения 180
15.2. Изменение размера изображения 180
15.3. Создание водяных знаков 182
15.4. Поддержка графического формата WebP в PHP 5.5 184

Глава 16. Работа с сетевыми сокетами в PHP. Сетевые функции

186
16.1. Еще раз о том, что такое сокет 186
16.2. Использование сокетов 186
16.3. Пример использования сокетов 187
16.4. Блокирующий и неблокирующий режимы сокета 190
16.5. DNS-функции 191

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

192
17.1. Зачем нужны собственные функции? 192
17.2. Особенности функций в PHP 192
17.3. Объявление функции 193
17.4. Области видимости функции 194
17.5. Вложенность функций 195
17.6. Переменное число аргументов 196
17.7. Передача массивов в качестве параметров 198
17.8. Генераторы 200
17.9. Особенности использования функции empty() 202

Раздел 5. Серверы баз данных MySQL 6 и SQLite

205

Глава 18. Основы SQL

207
18.1. Немного истории 207
18.2. Преимущества SQL 207
18.3. Как выглядят запросы? 208
18.4. Что такое база данных? 209
18.5. Создание таблиц 210
18.6. Добавление записей в таблицу 214
18.7. Обновление записей 214
18.8. Выборка записей 215
18.9. Удаление записей 216
18.10. Встроенные функции 217
18.11. Группировка записей. Сложные запросы 218
18.12. Копирование записей из одной таблицы в другую 221
18.13. Кэширование запросов 222

Глава 19. Функции для работы с MySQL

224
19.1. Способы работы с базой данных 224
19.2. Расширение mysql (для PHP 5) 225
19.2.1. Подключение к серверу MySQL 225
19.2.2. Несколько MySQL-соединений 227
19.2.3. Передача запросов серверу 227
19.2.4. Работа с базой данных. Создание базы данных 231
19.2.5. Функция mysql_real_escape_string($content) 231
19.2.6. Получение информации о результате запроса 232
19.3. Расширение PDO 233
19.3.1. Соединение с базой данных 233
19.3.2. Выполнение запросов и чтение результата 234
19.3.3. Получение данных 236
19.3.4. Особенности использования операторов LIKE, LIMIT и IN 238
19.3.5. Имена таблиц и полей при работе с PDO 238
19.3.6. Запросы вставки и обновление 239

Глава 20. Альтернативная база данных SQLite

240
20.1. MySQL vs SQLite: что лучше? 240
20.2. Открытие базы данных 242
20.3. Передача запросов 242
20.4. Работа с результатом запроса 243
20.5. Список PHP-функций для работы с SQLite 244

Глава 21. Полезные приемы при работе с MySQL 6

246
21.1. Выбор кодировки 246
21.2. Сортировка: вывод новинок. Вывод случайных записей 247
21.3. Постраничный вывод таблицы 248

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

253

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

255
22.1. Организация файлов и каталогов проекта 255
22.2. Выносим параметры в отдельный файл 258
22.3. Подключение дополнительных файлов 259
22.3.1. Инструкции include и require 259
22.3.2. Альтернативный способ подключения сценариев 259
22.3.3. Инструкции include_once и require_once 261
22.4. Шаблоны 261

Глава 23. Шаблонизатор Smarty

266
23.1. Что такое Smarty? 266
23.2. Установка Smarty 266
23.3. Создание файла setup.php 269
23.4. Разработка шаблонов Smarty 270
23.4.1. Комментарии в шаблонах 270
23.4.2. Переменные в Smarty 271
23.4.3. Файлы конфигурации шаблонов 272
23.4.4. Служебная переменная {$smarty} 273
23.4.5. Модификаторы переменных 274
23.4.6. Стандартные (встроенные) функции Smarty 277
Функции {include} и {insert} 277
Функция {foreach} 277
Функции {if}, {elseif}, {else} 279
Функция {capture} 280
Функция {php} 280
Функция {strip} 280
23.4.7. Пользовательские функции Smarty 281
Функция {assign} 281
Функция {cycle} 281
Функция {fetch} 282
Функции {html_checkboxes} и {html_radios} 282
Функция {html_image} 283
Функция {html_select_date} 283
Функция {html_select_time} 284
Функция {html_table} 285
23.5. Smarty для программиста 286
23.5.1. Специальные переменные 286
23.5.2. Полезные методы класса Smarty 288

Глава 24. Объектно-ориентированное программирование

289
24.1. Основы ООП 289
24.2. Классы и объекты 290
24.3. Конструкторы и деструкторы класса 292
24.4. Наследование классов. Полиморфизм 293
24.5. Новые возможности PHP 5.4/5.5 и PHP 7 294
24.5.1. Область видимости членов класса 294
24.5.2. Абстрактные классы и методы 295
24.5.3. Служебное слово final 296
24.5.4. Клонирование объектов 296
24.5.5. Обработка исключительных ситуаций 297
Служебное слово finally 298
Обработка фатальных ошибок 300
24.5.6. Константы-члены класса 301
24.5.7. Статические члены класса 302
24.5.8. Оператор instanceof 302
24.5.9. Итераторы 303
24.5.10. Пространства имен 303
24.5.11. Типажи (traits) 304
24.5.12. Вызов метода или свойства класса выражением 305
24.6. Особенности обработки переменных в PHP 7 305

Глава 25. Механизм сессий

306
25.1. Для чего нужны сессии? 306
25.2. Как работает механизм сессий? 307
25.3. Обход Cookies 309
25.4. Сценарий аутентификации 309

Глава 26. Введение в PEAR

314
26.1. Серьезные проекты и PEAR 314
26.2. Пример использования класса DB 315

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

319
27.1. Выбор системы контроля версий 319
27.2. Практическое использование TortoiseHG (Mercurial) 320
27.3. Просмотр внесенных изменений 322

Глава 28. Тестирование PHP-сценариев

324
28.1. Программа работает, но не так, как нам нужно 324
28.2. "Самодельные" точки останова 325
28.3. Система автоматического тестирования 326
28.4. Директива error_reporting 330

Часть II. Практика

331

Раздел 7. Разработка основных элементов сайта

333

Глава 29. Загрузка файлов на сервер

335
29.1. Что нужно знать о загрузке файлов на сервер? 335
29.2. Реализация загрузки файла 338
29.3. Загрузка нескольких файлов 340
29.4. Индикатор загрузки файла на PHP 5.4/5.5 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.2. Отправка писем с вложениями — класс HtmlMimeMail 360
31.2.1. Отправка сообщения 360
31.2.2. Проблемы при отправке сообщения 364
31.2.3. MIME-типы 365
31.3. Класс PHPMailer. Разработка сценария автоматической рассылки прайс-листа 366
31.4. Получение писем по протоколу POP3 370

Глава 32. Работа с RSS: получаем новости на сайт

374
32.1. Краткие сведения о RSS 374
32.2. Формат RSS-файла 374
32.3. Написание сценария импорта новостей 377
32.4. Подключение файла import.php к сайту 379
32.5. Создание граббера новостей 380

Глава 33. Поиск с использованием регулярных выражений

384
33.1. Нужно что-то найти... 384
33.2. Язык регулярных выражений RegExp 385
33.2.1. Регулярные выражения 385
33.2.2. Управляющие символы 386
33.2.3. Управляющие конструкции 387
Квантификаторы 387
Альтернативный оператор | 387
Скобки 388
33.2.4. Псевдосимволы 388
33.2.5. Практическое использование функций языка RegExp 388
33.3. Фильтры, или конец эры регулярных выражений 392

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

394
34.1. Формат MP3 394
34.2. Библиотека PEAR 395
34.3. Вывод ID3-тегов 396
34.4. Редактирование ID3-тегов 398
34.5. Удаление тега 398

Глава 35. Технология AJAX

400
35.1. Что такое AJAX? 400
35.2. Ваше первое AJAX-приложение 401

Раздел 8. Разработка типичного сайта

407
Глава 36. Создание простейшего движка сайта 409
36.1. Планирование движка 409
36.1.1. Зачем нужно разрабатывать собственный движок? 409
36.1.2. Необходимые нам функции движка 410
36.1.3. Принципиальная схема движка 412
36.2. Основные функции движка 413
36.2.1. Разработка TPL-шаблона 413
36.2.2. Файл настроек 414
36.2.3. Основной файл CMS — index.php 415
36.2.4. Проектирование базы данных 417
Таблица static 417
Таблица cats 418
Таблица pages 419
36.2.5. Иерархическая структура сайта 420
Алгоритм работы меню 420
Сценарий menu.php 422
Вывод содержимого раздела и страницы 427
36.3. Дополнительные функции движка 431
36.3.1. Вывод информации из таблицы static 431
36.3.2. Функция вывода содержимого HTML-файла 432
36.3.3. Версия для печати 433
36.4. Где взять листинги этой главы? 434

Глава 37. Создание фотогалереи

435
37.1. Постановка задачи 435
37.2. Загрузка изображений на сервер 435
37.3. Вывод галереи 439

Глава 38. Мобильная версия сайта

442
38.1. Важность мобильной версии 442
38.2. Рекомендации для мобильной версии 442
38.3. Класс MobileDetect 443
38.4. Способы реализации мобильной версии 444
38.4.1. Реализация адаптивного дизайна 445
38.4.2. Реализация динамического показа 446
38.4.3. Создаем отдельный сайт 446
38.5. О производительности мобильной версии 447

Глава 39. Импорт новостей с чужого сайта в базу данных WordPress

448
39.1. Постановка задачи 448
39.2. Вспомогательные функции 449
39.3. Вкратце о cURL 451
39.4. Основной сценарий 451

Глава 40. Создание счетчика сайта

456
40.1. Постановка задачи 456
40.2. Файл конфигурации 456
40.3. Разработка таблиц counter и ipaddr 457
40.4. Сценарий counter.php 458
40.5. Сценарий reset_counter.php 462

Глава 41. Статистика сайта

464
41.1. Методы сбора статистики 464
41.2. Программы-анализаторы журналов веб-сервера 465
41.3. Системы статистики 467

Глава 42. Голосования и комментарии для сайта

470
42.1. Разработка собственной системы голосования 470
42.1.1. Общая структура системы 470
42.1.2. Разработка сценария poll_form.php 471
42.1.3. Сценарий poll_process.php 473
42.1.4. Сценарий poll_results.php 474
42.2. Комментарии DISQUS 477
42.2.1. Описание платформы 477
42.2.2. Установка комментариев на свой сайт 478

Раздел 9. Сложный проект

485

Глава 43. Постановка задачи

487
43.1. Концепция проекта 487
43.2. Алгоритм работы 488
43.3. Структура базы данных 489

Глава 44. Разработка основной части сайта

493
44.1. Структура проекта 493
44.2. Основной сценарий index.php 494
44.2.1. Подключение механизмов WordPress 494
44.2.2. Аутентификация пользователя 495
44.2.3. Форма добавления цели 496
44.2.4. Добавление цели 497
44.2.5. Просмотр всех целей 501
44.3. Сценарий v.php — просмотр цели 505
44.4. Сценарии отправки уведомлений. Сценарии yes.php и no.php 506

Глава 45. Панель управления WordPress

514
45.1. О чем эта глава? 514
45.2. Вход в панель управления 514
45.3. Просмотр целей 514
45.4. Не забывайте о UTF-8 516

Раздел 10. Обеспечение безопасности сайта

517
Глава 46. SSL-соединения 519
46.1. Защищаем передаваемые данные 519
46.2. Настройка SSL в DirectAdmin 520
46.3. SSL-переменные 522

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

524
47.1. Конфигурационный файл php.ini 524
47.2. Отключение потенциально опасных функций 526
47.3. Рекомендованные значения некоторых конфигурационных директив 526

Глава 48. Защита сайта от атак

527
48.1. Сайт в опасности 527
48.2. Два самых распространенных метода взлома 528
48.3. Межсайтовый скриптинг 528
48.4. SQL-инъекции 530
48.5. Флуд 534
48.6. Защита форума PHPBB2 от спамеров 535

Раздел 11. Полезные сведения

537

Глава 49. Визуальный редактор SPAW2 для вашего сайта

539
49.1. Знакомство с визуальным редактором и его базовая настройка 539
49.2. Адаптация редактора к вашему сайту 543
49.2.1. Загрузка в редактор текста статьи 543
49.2.2. Вывод редактора в TPL-шаблоне 543
49.2.3. Запрет изменения размера редактора 544
49.2.4. Изменение размеров редактора "на лету" — в процессе выполнения сценария 545
49.2.5. Панель инструментов редактора 545
49.2.6. Ошибка Error 105 (net::ERR_NAME_NOT_RESOLVED) 548

Глава 50. WAP-сервер средствами PHP

549
50.1. Есть ли необходимость в WAP? 549
50.2. Настройка веб-сервера Apache 550
50.3. PHP-сценарий 551

Глава 51. Пишем коммерческий сценарий

552
51.1. Zend Guard: за и против 552
51.2. Установка Zend Guard 554
51.3. Быстрая защита сценария 554
51.4. Ошибка Unable to locate XML file 558
51.5. Лицензии 558
51.6. Zend Guard — панацея? 562

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

563
52.1. Этот загадочный cURL 563
52.2. Авторизация на сайте и загрузка файла после нее 565
52.3. Замена функции file_get_contents() с помощью cURL 568
52.4. Загрузка файла через FTP 568
52.5. Проверка доступности сайта 569

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

571
53.1. Что такое фреймворк? 571
53.2. Разработка простой гостевой книги на PHP 572
53.2.1. Исходная точка 572
53.2.2. Отделяем код от представления 573
53.2.3. Изолируем логику приложения 574
53.2.4. Изолируем разметку 575
53.2.5. Добавление еще одной страницы 577
53.2.6. Создаем фронт-контроллер 578
53.3. Простая гостевая книга на Symfony 580
53.3.1. Модифицируем имеющийся код 580
53.3.2. Symfony-приложение с нуля 582
   
Приложения 587
Приложение 1. Программа phpMyAdmin 589
П1.1. Действия над таблицами 590
П1.2. Создание новой таблицы. Изменение структуры таблицы 592
П1.3. Вставка записей 593
П1.4. Обзор таблицы 593
П1.5. Выполнение произвольного SQL-кода 593
П1.6. Резервное копирование БД 595
Приложение 2. Flash и PHP 596
Приложение 3. Оптимизация PHP-кода 600
П3.1. Правильное использование echo 600
П3.2. Длина переменных 601
П3.3. Правильное обращение к элементам массива 601
П3.4. Циклы 602
П3.5. Чтение файлов 603
П3.6. Вывод текста: echo против printf 605
П3.7. "Лишние" вызовы функций 607
П3.8. Контрольные замеры 608
П3.8.1. Чтение файла 608
П3.8.2. Вывод содержимого файла 609
П3.9. Выводы 611
Приложение 4. Описание электронного архива 612
Предметный указатель 615


На главную | Где купить | Авторам | Вакансии | Реклама | Издательство | Каталог | Статьи наших авторов | Контакты
© 2001–2017 Издательство «БХВ-Петербург».
Все права защищены. Частичное или полное копирование текстов, слоганов и фотоизображений без письменного согласия Правообладателя запрещено.