ГЛАВА 1. ВВЕДЕНИЕ В PHP ......................... 11
1.1. ЧТО ДЕЛАЕТ PHP? ..................................................................... 11
1.3. УСТАНОВКА PHP ....................................................................... 12
1.4. ОБЗОР PHP ............................................................................. 13
Конфигурация системы .............................................................. 14
Формы ....................................................................................... 15
Базы данных ............................................................................... 16
Графика ...................................................................................... 18
ГЛАВА 2. ОСНОВЫ ЯЗЫКА .......................... 21
2.1. ЛЕКСИЧЕСКАЯ СТРУКТУРА ........................................................ 21
2.1.1. Чувствительность к регистру ............................................ 21
2.1.2. Операторы и точки с запятыми ......................................... 21
2.1.3. Пробелы и разрывы строк ................................................. 22
2.1.4. Комментарии .................................................................... 23
2.1.5. Литералы .......................................................................... 26
2.1.6. Идентификаторы .............................................................. 27
Имена переменных ............................................................... 27
Имена функций ..................................................................... 27
Имена классов ...................................................................... 28
Константы ............................................................................. 28
2.2. КЛЮЧЕВЫЕ СЛОВА .................................................................. 28
2.3. ПЕРЕМЕННЫЕ ......................................................................... 38
2.3.1. Переменные переменных ................................................. 39
2.3.2. Переменные-ссылки ......................................................... 39
2.3.3. Области видимости переменных ...................................... 40
2.3.4. Сбор мусора (Garbage Collection) ..................................... 43
2.4. ВЫРАЖЕНИЯ И ОПЕРАТОРЫ ...................................................... 44
2.4.1. Количество операндов ...................................................... 46
2.4.2. Приоритет операторов ..................................................... 46
2.4.3. Порядок выполнения операторов .......................................... 47
2.4.4. Неявное приведение типа .................................................... 48
2.4.5. Арифметические операторы ................................................ 49
2.4.6. Оператор конкатенации строки ............................................ 50
2.4.7. Операторы инкремента и декремента .................................. 50
2.4.8. Операторы сравнения ......................................................... 52
2.4.9. Поразрядные (побитовые) операторы .................................. 54
2.4.10. Логические операторы ....................................................... 56
2.4.11. Операторы приведения типов ............................................ 57
2.4.12. Оператор присваивания ..................................................... 58
2.4.13. Разные операторы: подавление ошибок и другие ............... 60
2.5. ОПЕРАТОРЫ УПРАВЛЕНИЯ ВЫПОЛНЕНИЕМ ............................... 61
2.5.1. Оператор if ........................................................................... 61
2.5.2. Оператор switch .................................................................... 63
2.5.3. Оператор while ..................................................................... 65
2.5.4. Цикл for. Цикл со счетчиком ................................................ 68
2.5.5. Оператор foreach .................................................................. 69
2.5.6. Конструкция try ... catch ....................................................... 70
2.5.7. Оператор declare ................................................................... 70
2.5.8. Операторы exit и return ....................................................... 71
2.5.9. Оператор goto ...................................................................... 72
2.6. ВКЛЮЧЕНИЕ КОДА ........................................................................... 72
2.7. ВНЕДРЕНИЕ PHP В WEB-СТРАНИЦЫ ........................................... 74
ГЛАВА 3. ФУНКЦИИ .......................................................................... 79
3.1. ВЫЗОВ ФУНКЦИИ ........................................................................ 79
3.2. ОПРЕДЕЛЕНИЕ ФУНКЦИИ ......................................................... 80
3.3. ОБЛАСТЬ ДЕЙСТВИЯ ПЕРЕМЕННОЙ ........................................... 83
3.4. ПАРАМЕТРЫ ФУНКЦИИ ............................................................. 85
3.5. ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ ..................................................... 90
3.6. ПЕРЕМЕННЫЕ ФУНКЦИИ. ОБРАЩЕНИЕ К ФУНКЦИЯМ ЧЕРЕЗ ПЕРЕМЕННЫЕ ............................................. 91
3.7. АНОНИМНЫЕ ФУНКЦИИ ............................................................ 92
ГЛАВА 4. СТРОКИ ............................................................... 94
4.1. СПОСОБЫ ЗАПИСИ СТРОКОВЫХ КОНСТАНТ ................................. 94
4.2. ВЫВОД СТРОК ........................................................................ 98
4.2.1. Конструкция echo ............................................................. 98
4.2.2. Функция print() .................................................................. 99
4.2.3. Функция printf() ................................................................. 99
4.2.4. Функции print_r() и var_dump() ........................................ 102
4.3. ПОЛУЧЕНИЕ ДОСТУПА К ОТДЕЛЬНЫМ СИМВОЛАМ ...................... 103
4.4. ОЧИСТКА СТРОК .................................................................... 104
4.5. КОДИРОВАНИЕ И ЭКРАНИРОВАНИЕ .......................................... 106
4.5.1. В формат HTML ............................................................... 106
Экранирование всех специальных символов ............................ 106
Экранирование только символов синтаксиса HTML ................. 107
Удаление HTML-тегов ............................................................... 108
Извлечение META-тегов ............................................................ 109
4.5.2. Конвертирование в URL .................................................. 109
Кодирование и декодирование по RFC 3986 ............................ 109
Кодирование строки параметров ............................................. 110
4.5.3. В формат SQL ................................................................. 110
4.5.4. Кодирование C-строк ..................................................... 111
4.6. СРАВНЕНИЕ СТРОК .................................................................. 112
4.7. МАНИПУЛЯЦИЯ И ПОИСК СТРОК .............................................. 115
4.7.1. Подстроки ........................................................................... 116
4.7.2. Разные строковые функции ............................................. 117
4.7.3. Декомпозиция строки. Разбиение строки .......................... 118
4.7.4. Функции поиска строк ..................................................... 120
4.8. РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ ....................................................... 123
4.8.1. Основные положения использования регулярных выражений ............................................................................... 123
4.8.2. Классы символов ............................................................... 124
4.8.3. Альтернативы .................................................................. 125
4.8.4. Повторяющиеся последовательности ................................. 126
4.8.5. Подшаблоны ................................................................... 127
4.8.6. Разделители .................................................................... 127
4.8.7. Поведение соответствия .................................................... 128
4.8.8. Классы символов ................................................................. 128
4.8.9. Якоря ................................................................................ 129
4.8.10. Квантификаторы и жадность .......................................... 130
4.8.11. Нефиксируемые группы .................................................. 131
4.8.12. Обратные ссылки ............................................................ 131
4.8.13. Флаги ............................................................................... 132
4.8.14. Встроенные опции .......................................................... 133
4.8.15. Опережающие и ретроспективные утверждения ............. 134
4.8.16. Сокращения или однократные подмаски .......................... 135
4.8.17. Условные выражения ...................................................... 136
4.8.18. Функции ......................................................................... 136
4.8.19. Отличия от регулярных выражений Perl ............................ 143
ГЛАВА 5. МАССИВЫ ................................................................ 145
5.1. ИНДЕКСИРОВАННЫЕ И АССОЦИАТИВНЫЕ МАССИВЫ ..................... 145
5.2. ИДЕНТИФИКАЦИЯ ЭЛЕМЕНТОВ МАССИВА ................................... 146
5.3. ХРАНЕНИЕ ДАННЫХ В МАССИВАХ ............................................ 147
Добавление значений в конец массива ........................................ 148
Присваивание диапазона значений .............................................. 148
Получение размера массива ......................................................... 149
Заполнение массива .................................................................... 149
5.4. МНОГОМЕРНЫЕ МАССИВЫ ....................................................... 150
5.5. ИЗВЛЕЧЕНИЕ НЕСКОЛЬКИХ ЗНАЧЕНИЙ ....................................... 150
«Вырезка» из массива .................................................................. 151
Разделение массива на несколько массивов ............................... 152
Ключи и значения ......................................................................... 152
Проверка существования элемента массива .................................. 153
Удаление и вставка элементов в массив ...................................... 154
5.6. ПРЕОБРАЗОВАНИЕ МЕЖДУ МАССИВАМИ И ПЕРЕМЕННЫМИ ............ 155
Создание переменных из массива ................................................. 155
Создание массива из переменных ................................................. 156
5.7. ОБХОД МАССИВОВ ................................................................ 156
Конструкция foreach .................................................................. 157
Функции-итераторы .................................................................... 157
Использование цикла for .............................................................. 159
Вызов функции для каждого элемента массива .......................... 159
Сокращение массива .................................................................... 161
Поиск значений ............................................................................ 162
5.8. СОРТИРОВКА ........................................................................... 163
Сортировка одного массива за один раз ..................................... 163
Натуральный порядок сортировки ................................................ 166
Сортировка нескольких массивов за один раз .............................. 167
Инвертирование массивов ............................................................. 167
Сортировка в случайном порядке .................................................. 168
5.9. РАБОТА СО ВСЕМ МАССИВОМ .................................................. 169
Вычисление суммы всех элементов массива ................................. 169
Вычисление разницы между двумя массивами ............................... 170
Фильтрация элементов массива .................................................... 170
5.10. ИСПОЛЬЗОВАНИЕ МАССИВОВ .................................................. 171
Множества ................................................................................... 171
Стеки ............................................................................................. 172
5.11. ИНТЕРФЕЙС ITERATOR .............................................................. 173
ГЛАВА 6. ОБЪЕКТЫ ......................................................................... 176
6.1. ТЕРМИНОЛОГИЯ И ОСНОВНЫЕ ПОНЯТИЯ .................................... 177
6.2. СОЗДАНИЕ ОБЪЕКТА .................................................................. 178
6.3. ДОСТУП К СВОЙСТВАМ И МЕТОДАМ .......................................... 179
6.4. ОБЪЯВЛЕНИЕ КЛАССА ............................................................... 180
Определение методов ................................................................... 181
Объявление свойств ...................................................................... 184
Перегрузка .................................................................................... 185
Объявление констант .................................................................... 186
Наследование ................................................................................ 186
Интерфейсы .................................................................................. 187
Абстрактные методы ................................................................ 192
Конструкторы ........................................................................... 193
Деструкторы ............................................................................ 194
6.5. ИНТРОСПЕКЦИЯ .................................................................... 195
Исследование классов ................................................................. 195
Исследование объекта ................................................................ 197
Пример интроспекции ............................................................... 198
6.6. СЕРИАЛИЗАЦИЯ ................................................................... 201
ГЛАВА 7. WEB-ТЕХНОЛОГИИ .................................................... 206
7.1. ОСНОВЫ НПР ......................................................................... 206
7.2. ПЕРЕМЕННЫЕ ....................................................................... 207
7.3. ИНФОРМАЦИЯ СЕРВЕРА ......................................................... 208
7.4. ОБРАБОТКА ФОРМ ................................................................. 210
Методы ..................................................................................... 210
Параметры ................................................................................ 211
Самообработка страниц ............................................................ 213
Липкие формы ............................................................................ 215
Многозначные параметры .......................................................... 216
Липкие многозначные параметры .............................................. 218
Загрузка файлов ........................................................................ 220
Проверка формы ....................................................................... 221
7.5. УСТАНОВКА ЗАГОЛОВКОВ ОТВЕТА ............................................ 224
Разные типы контента .............................................................. 224
Перенаправления ....................................................................... 225
Срок истечения .......................................................................... 225
Аутентификация ......................................................................... 226
7.6. ПОДДЕРЖАНИЕ СОСТОЯНИЯ ................................................... 227
7.6.1. Использование Cookies ................................................... 228
7.6.2. Сессии .............................................................................. 232
Основы сессий ............................................................................ 232
Альтернативы Cookies ................................................................. 234
Пользовательское хранилище ................................................... 235
Комбинирование Cookies и сессий .......................................... 235
SSL .......................................................................................... 236
ГЛАВА 8. БАЗЫ ДАННЫХ ....................................................... 238
8.1. РЕЛЯЦИОННЫЕ БАЗЫ ДАННЫХ И SQL ....................................... 239
8.1.1. Введение в реляционные базы данных и SQL ..................... 239
8.1.2. Объекты данных РНР ...................................................... 241
Создание соединения ............................................................. 242
Взаимодействие с базой данных ................................................ 242
Подготовленные запросы .......................................................... 242
Транзакции ............................................................................... 244
8.2. ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ ИНТЕРФЕЙС MYSQLI ................... 244
8.3. SQLITE ................................................................................... 247
8.4. РАБОТА С ДАННЫМИ ЧЕРЕЗ ПРЯМОЕ
МАНИПУЛИРОВАНИЕ ФАЙЛАМИ .............................................. 250
ГЛАВА 9. ГРАФИКА .................................................................... 260
9.1. ВСТРАИВАНИЕ ИЗОБРАЖЕНИЯ В СТРАНИЦУ ................................ 260
9.2. ОСНОВНЫЕ КОНЦЕПЦИИ ГРАФИКИ ............................................. 261
9.3. СОЗДАНИЕ И РИСОВАНИЕ ИЗОБРАЖЕНИЙ .................................. 262
9.4. ИЗОБРАЖЕНИЯ С ТЕКСТОМ ...................................................... 268
9.5. ДИНАМИЧЕСКИЕ СГЕНЕРИРОВАННЫЕ КНОПКИ ............................ 272
9.6. ИЗМЕНЕНИЕ РАЗМЕРА ИЗОБРАЖЕНИЙ ....................................... 276
9.7. ОБРАБОТКА ЦВЕТА .................................................................. 277
ГЛАВА 10. PDF ............................................................................. 283
10.1. PDF-РАСШИРЕНИЯ .................................................................. 283
10.2. ДОКУМЕНТЫ И СТРАНИЦЫ ..................................................... 283
ГЛАВА 11. XML .......................................................................... 286
11.1. Краткое руководство по XML ............................................ 286
11.2. Создание XML-документов ................................................ 288
ГЛАВА 12. БЕЗОПАСНОСТЬ ....................................................... 291
12.1. Фильтруем ввод .................................................................. 291
12.2. Межсайтовый скриптинг .................................................... 294
12.3. Экранирование вывода ....................................................... 297
12.3.1. Экранирование как инструмент соответствия контексту .. 297
12.3.2. Имена файлов ............................................................... 302
Основные проблемы безопасности, связанные с именами файлов ... 302
Проверка относительных путей ................................................... 303
12.4. Фиксация сессии ................................................................ 304
12.5. Безопасная загрузка файлов ................................................ 304
Не доверяйте предоставленным браузером именам файлов ........ 305
Остерегайтесь заполнения вашей файловой системы .................. 305
Осторожно! register_globals ..................................................... 305
12.6. Доступ к файлам ................................................................. 306
Ограничиваем доступ к файловой системе ................................... 306
Используйте umask() .................................................................. 307
Вообще не используйте файлы .................................................... 308
Файлы сессии ............................................................................. 308
Прячем библиотеки PHP .............................................................. 309
12.7. Запуск пользователем PHP-кода ......................................... 310
12.8. Команды оболочки ............................................................. 311
12.9. Резюме .................................................................................. 312
ПРИЛОЖЕНИЕ.
СПРАВОЧНИК ПО ФУНКЦИЯМ .................................................. 313
Если вы интересуетесь веб-программированием и разработкой динамических веб-сайтов - эта книга для Вас!
Наша книга поможет вам освоить язык PHP практически с нуля-от самых самых основ до создания своих собственных приложений и библиотек кода.
Большая часть книги посвящена подробному Справочнику функций PHP - для каждой функции в этом справочнике будет указано: ее имя, принимаемые параметры с типами данных, будет сказано, какой из параметров обязательный, а какой - нет, также будут приведены краткое описание функции, побочные эффекты, ошибки и возвращаемые функцией структуры данных. Для удобства справочник составлен в алфавитном порядке.
Книга будет полезна программистам любого уровня - от самых начинающих до продвинутых пользователей, каждый найдет здесь для себя много полезного.