Главная| Трекер ▼| Поиск| Правила| FAQ| |
Автор | Сообщение |
---|---|
valeri[µ]
Модератор ![]() Сообщения: 7870 ![]() |
PHP. Рецепты программирования. 3-е издание
![]() Год: 2015 Автор: David Sklar, Adam Trachtenberg/Адам Трахтенберг, Дэвид Скляр Переводчик: Е. Матвеев Жанр: Программирование Издательство: Питер ISBN: 978-5-496-01592-9 Серия: Бестселлеры O'Reilly Язык: Русский Формат: PDF Качество: Изначально компьютерное (eBook) Интерактивное оглавление: Да Количество страниц: 784 Описание: Третье издание этой популярной книги представляет собой подборку готовых решений наиболее распространенных задач на языке РНР. Изложен материал, интересный каждому разработчику: базовые типы данных, операции с ними, файлы cookie, функции РНР, аутентификация пользователей, работа со слоями, проблемы безопасности, ускорение действия программ, работа в сети, создание графических изображений, обработка ошибок, отладка сценариев и написание тестов. Даны рецепты, затрагивающие основы объектно-ориентированного программирования и новые функциональные возможности РНР. Каждый рецепт является самодостаточным и показывает весь путь решения задачи. Третье издание книги полностью обновлено под версию PHP 5.4, а также включает ряд новых разделов по работе с данными. Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Для кого предназначена эта книга . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 О чем говорится в книге . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Другие ресурсы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Глава 1. Строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.1. Обращение к подстрокам . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 1.2. Выделение подстрок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 1.3. Замена подстрок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 1.4. Обработка строки по одному байту . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 1.5. Обратная перестановка строки по словам или байтам . . . . . . . . . . . . . . . . 34 1.6. Генерирование случайной строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 1.7. Сжатие и свертка табуляций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 1.8. Управление регистром символов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 1.9. Интерполяция функций и выражений в строках . . . . . . . . . . . . . . . . . . . . 39 1.10. Удаление начальных или конечных пропусков в строке . . . . . . . . . . . . . . 41 1.11. Генерирование данных, разделенных запятыми . . . . . . . . . . . . . . . . . . . 42 1.12. Разбор данных, разделенных запятыми . . . . . . . . . . . . . . . . . . . . . . . . . . 44 1.13. Генерирование записей с полями фиксированной длины . . . . . . . . . . . . . 45 1.14. Разбор данных с полями фиксированной длины . . . . . . . . . . . . . . . . . . . 46 1.15. Разбиение строк на фрагменты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 1.16. Перенос текста по заданной длине строки . . . . . . . . . . . . . . . . . . . . . . . 51 1.17. Хранение двоичных данных в строках . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 1.18. Программа: загрузка файла в формате CSV . . . . . . . . . . . . . . . . . . . . . . . 55 Глава 2. Числа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 2.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 2.1. Проверка значения переменной . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 2.2. Сравнение чисел с плавающей точкой . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 2.3. Округление чисел с плавающей точкой . . . . . . . . . . . . . . . . . . . . . . . . . . 61 2.4. Работа с последовательностями целых чисел . . . . . . . . . . . . . . . . . . . . . . 63 2.5. Генерирование случайных чисел в заданном диапазоне . . . . . . . . . . . . . . 65 2.6. Генерирование предсказуемых случайных чисел . . . . . . . . . . . . . . . . . . . . 66 2.7. Генерирование случайных чисел с неравномерным распределением . . . . . 67 2.8. Вычисление логарифмов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 2.9. Вычисление экспоненты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 2.10. Форматирование чисел . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 2.11. Форматирование денежных сумм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 2.12. Вывод формы множественного числа . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 2.13. Вычисление тригонометрических функций . . . . . . . . . . . . . . . . . . . . . . . 75 2.14. Выполнение тригонометрических операций в градусах . . . . . . . . . . . . . . 76 2.15. Работа с очень большими или очень малыми числами . . . . . . . . . . . . . . . 77 2.16. Преобразование между системами счисления . . . . . . . . . . . . . . . . . . . . . 79 2.17. Математические операции в других системах счисления . . . . . . . . . . . . . 80 2.18. Определение расстояния между двумя географическими точками . . . . . . 82 Глава 3. Дата и время . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 3.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 3.1. Определение текущей даты и времени . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 3.2. Преобразование компонентов времени и даты во временную метку . . . . . 89 3.3. Преобразование временной метки в компоненты времени и даты . . . . . . . 91 3.4. Вывод даты или времени в заданном формате . . . . . . . . . . . . . . . . . . . . . 92 3.5. Вычисление разности двух дат . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 3.6. Определение дня недели, месяца или года . . . . . . . . . . . . . . . . . . . . . . . . 97 3.7. Проверка существования введенной даты . . . . . . . . . . . . . . . . . . . . . . . . . 99 3.8. Разбор строк даты и времени . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 3.9. Операции сложения и вычитания с датами . . . . . . . . . . . . . . . . . . . . . . . 103 3.10. Вычисление времени с учетом часовых поясов и летнего времени . . . . 105 3.11. Получение времени с высокой точностью . . . . . . . . . . . . . . . . . . . . . . . 106 3.12. Генерирование временных диапазонов . . . . . . . . . . . . . . . . . . . . . . . . . 108 3.13. Использование негригорианских календарей . . . . . . . . . . . . . . . . . . . . 109 3.14. Программа: календарь . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Глава 4. Массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 4.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 4.1. Определение массивов с начальным индексом, отличным от 0 . . . . . . . . 120 4.2. Хранение нескольких элементов для каждого ключа . . . . . . . . . . . . . . . . 122 4.3. Инициализация массива диапазоном целых чисел . . . . . . . . . . . . . . . . . . 123 4.4. Перебор элементов массива . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 4.5. Удаление элементов из массива . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 4.6. Изменение размера массива . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 4.7. Слияние массивов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 4.8. Преобразование массива в строку . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 4.9. Вывод массива с разделением запятыми . . . . . . . . . . . . . . . . . . . . . . . . . 134 4.10. Проверка присутствия ключа в массиве . . . . . . . . . . . . . . . . . . . . . . . . 135 4.11. Проверка присутствия элемента в массиве . . . . . . . . . . . . . . . . . . . . . . 136 4.12. Определение позиции значения в массиве . . . . . . . . . . . . . . . . . . . . . . 137 4.13. Поиск элементов, удовлетворяющих некоторому условию . . . . . . . . . . . 138 4.14. Поиск элемента с наибольшим или наименьшим значением . . . . . . . . . 140 4.15. Перестановка в обратном порядке . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 4.16. Сортировка массива . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 4.17. Сортировка массива по вычисляемому полю . . . . . . . . . . . . . . . . . . . . . 143 4.18. Сортировка нескольких массивов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145 4.19. Сортировка массива с использованием метода вместо функции . . . . . . . 147 4.20. Случайная перестановка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 4.21. Удаление дубликатов из массива . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 4.22. Применение функции к каждому элементу массива . . . . . . . . . . . . . . . . 150 4.23. Вычисление объединения, пересечения и разности двух массивов . . . . 152 4.24. Эффективный перебор больших или высокозатратных наборов данных . 154 4.25. Работа с объектом в синтаксисе массива . . . . . . . . . . . . . . . . . . . . . . . . 156 Глава 5. Переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 5.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 5.1. Предотвращение путаницы между == и = . . . . . . . . . . . . . . . . . . . . . . . 161 5.2. Определение значения по умолчанию . . . . . . . . . . . . . . . . . . . . . . . . . . 162 5.3. Переключение значений без использования временных переменных . . . 163 5.4. Динамическое создание имени переменной . . . . . . . . . . . . . . . . . . . . . . 164 5.5. Сохранение значения локальной переменной между вызовами функции . 166 5.6. Совместный доступ к переменным между процессами . . . . . . . . . . . . . . . 167 5.7. Строковое представление сложных типов данных . . . . . . . . . . . . . . . . . . 174 5.8. Вывод содержимого переменной в строковом виде . . . . . . . . . . . . . . . . . 176 Глава 6. Функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 6.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 6.1. Обращение к параметрам функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 6.2. Определение значений по умолчанию для параметров функции . . . . . . . 182 6.3. Передача по ссылке . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 6.4. Именованные параметры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 6.5. Контроль типа аргументов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 6.6. Создание функций с переменным количеством аргументов . . . . . . . . . . . 187 6.7. Возвращение значений по ссылке . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 6.8. Возвращение нескольких значений из функции . . . . . . . . . . . . . . . . . . . 192 6.9. Пропуск отдельных возвращаемых значений . . . . . . . . . . . . . . . . . . . . . 194 6.10. Возвращение признака ошибки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 6.11. Вызов разных функций в зависимости от значения переменной . . . . . . 196 6.12. Обращение к глобальной переменной внутри функции . . . . . . . . . . . . . 198 6.13. Создание динамических функций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 Глава 7. Классы и объекты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 7.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 7.1. Создание объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 7.2. Определение конструкторов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 7.3. Определение деструкторов объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 7.4. Управление доступом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 7.5. Запрет на изменение классов и методов . . . . . . . . . . . . . . . . . . . . . . . . . 212 7.6. Определение строкового представления объекта . . . . . . . . . . . . . . . . . . 213 7.7. Результат сходного поведения в разных классах . . . . . . . . . . . . . . . . . . . 215 7.8. Создание абстрактных базовых классов . . . . . . . . . . . . . . . . . . . . . . . . . 218 7.9. Присваивание ссылок на объекты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 7.10. Клонирование объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 7.11. Переопределение обращений к свойствам . . . . . . . . . . . . . . . . . . . . . . . 224 7.12. Вызов методов объекта, возвращаемого другим методом . . . . . . . . . . . 228 7.13. Композиция объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 7.14. Обращение к переопределенным методам . . . . . . . . . . . . . . . . . . . . . . . 233 7.15. Динамическое создание методов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 7.16. Полиморфизм методов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 7.17. Определение констант класса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 7.18. Определение статических методов и свойств . . . . . . . . . . . . . . . . . . . . 240 7.19. Управление сериализацией объектов . . . . . . . . . . . . . . . . . . . . . . . . . . 243 7.20. Интроспекция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 7.21. Проверка объекта на принадлежность к определенному классу . . . . . . . 249 7.22. Автоматическая загрузка файлов классов при создании объекта . . . . . . 251 7.23. Динамическое создание объекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 7.24. Программа: whereis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254 Глава 8. Основы веб-программирования . . . . . . . . . . . . . . . . . . . . . 256 8.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 8.1. Запись cookie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 8.2. Чтение cookie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259 8.3. Удаление cookie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 8.4. Построение строки запроса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 8.5. Чтение тела запроса POST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 8.6. Использование аутентификации HTTP............................ 262 8.7. Аутентификация с использованием cookie . . . . . . . . . . . . . . . . . . . . . . . . 267 8.8. Чтение заголовка HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 8.9. Запись заголовка HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 8.10. Отправка конкретного кода статуса HTTP . . . . . . . . . . . . . . . . . . . . . . . 272 8.11. Перенаправление запросов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 8.12. Принудительная отправка вывода браузеру . . . . . . . . . . . . . . . . . . . . . 274 8.13. Буферизация вывода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 8.14. Сжатие вывода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 8.15. Чтение переменных окружения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277 8.16. Запись переменных окружения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278 8.17. Взаимодействие с Apache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 8.18. Перенаправление мобильных браузеров . . . . . . . . . . . . . . . . . . . . . . . . 281 8.19. Программа: (де)активизация учетных записей . . . . . . . . . . . . . . . . . . . 282 8.20. Программа: Tiny Wiki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 8.21. Программа: HTTP Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 Глава 9. Формы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 9.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 9.1. Обработка ввода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 9.2. Проверка ввода на форме: обязательные поля . . . . . . . . . . . . . . . . . . . . 300 9.3. Проверка ввода на форме: числа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 9.4. Проверка ввода на форме: адреса электронной почты . . . . . . . . . . . . . . 304 9.5. Проверка ввода на форме: раскрывающиеся меню . . . . . . . . . . . . . . . . . 305 9.6. Проверка ввода на форме: переключатели . . . . . . . . . . . . . . . . . . . . . . . 307 9.7. Проверка ввода на форме: флажки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 9.8. Проверка ввода на форме: дата и время . . . . . . . . . . . . . . . . . . . . . . . . . 310 9.9. Проверка ввода на форме: кредитные карты . . . . . . . . . . . . . . . . . . . . . 311 9.10. Предотвращение межсайтовых сценарных атак . . . . . . . . . . . . . . . . . . . 312 9.11. Обработка отправленных файлов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314 9.12. Работа с многостраничными формами . . . . . . . . . . . . . . . . . . . . . . . . . . 316 9.13. Повторное отображение форм со встроенными сообщениями об ошибках . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 9.14. Защита от повторной отправки одной формы . . . . . . . . . . . . . . . . . . . . 320 9.15. Предотвращение внедрения глобальных переменных . . . . . . . . . . . . . . 322 9.16. Работа с переменными, имена которых содержат точки . . . . . . . . . . . . 324 9.17. Использование элементов форм с множественным выбором . . . . . . . . . 325 9.18. Создание раскрывающихся меню на основании текущей даты . . . . . . . . 326 Глава 10. Базы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 10.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 10.1. Использование баз данных DBM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 10.2. Использование базы данных SQLite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 10.3. Подключение к базе данных SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 10.4. Запрос к базе данных SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 10.5. Выборка строк данных без цикла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 10.6. Модификация данных в базах данных SQL . . . . . . . . . . . . . . . . . . . . . . 341 10.7. Эффективное повторение запросов . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 10.8. Получение количества строк данных, возвращаемых запросом . . . . . . . 346 10.9. Экранирование в запросах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 10.10. Работа с журналом отладочной информации и сообщений об ошибках 348 10.11. Создание уникальных идентификаторов . . . . . . . . . . . . . . . . . . . . . . . 350 10.12. Программное построение запросов . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 10.13. Создание страничных ссылок на серии записей . . . . . . . . . . . . . . . . . . 357 10.14. Кэширование запросов и результатов . . . . . . . . . . . . . . . . . . . . . . . . . 360 10.15. Использование подключения к базе данных в любой точке программы 362 10.16. Программа: база данных сообщений интернет-форума . . . . . . . . . . . . 364 10.17. Использование Redis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 Глава 11. Сеансы и долгосрочное хранение данных . . . . . . . . . . . . 373 11.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 11.1. Отслеживание сеанса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 11.2. Предотвращение перехвата сеанса . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 11.3. Предотвращение фиксации сеанса . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 11.4. Хранение сеансовых данных в Memcached . . . . . . . . . . . . . . . . . . . . . . 378 11.5. Хранение сеансовых данных в базе данных . . . . . . . . . . . . . . . . . . . . . . 379 11.6. Хранение произвольных данных в общей памяти . . . . . . . . . . . . . . . . . 382 11.7. Кэширование вычисленных результатов в сводных таблицах . . . . . . . . . 385 Глава 12. XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 12.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 12.1. Генерирование XML в строковом формате . . . . . . . . . . . . . . . . . . . . . . . 391 12.2. Генерирование XML с использованием DOM . . . . . . . . . . . . . . . . . . . . . 393 12.3. Разбор базовых документов XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 12.4. Разбор сложных документов XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 12.5. Разбор больших документов XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 12.6. Извлечение информации с использованием XPath . . . . . . . . . . . . . . . . . 406 12.7. Преобразование XML с использованием XSLT . . . . . . . . . . . . . . . . . . . . . 409 12.8. Настройка параметров XSLT из PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 12.9. Вызов функций PHP из таблиц стилей XSLT . . . . . . . . . . . . . . . . . . . . . . 413 12.10. Проверка действительности документов XML . . . . . . . . . . . . . . . . . . . 417 12.11. Преобразование кодировки контента . . . . . . . . . . . . . . . . . . . . . . . . . 419 12.12. Чтение каналов RSS и Atom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 420 12.13. Генерирование каналов RSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 12.14. Генерирование каналов Atom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 Глава 13. Автоматизация в веб-приложениях . . . . . . . . . . . . . . . . . 430 13.1. Пометки в веб-страницах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 13.2. Удаление некорректной или нестандартной разметки HTML . . . . . . . . . 433 13.3. Извлечение ссылок из файлов HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 13.4. Преобразование простого текста в HTML . . . . . . . . . . . . . . . . . . . . . . . 439 13.5. Преобразование HTML в простой текст . . . . . . . . . . . . . . . . . . . . . . . . . 440 13.6. Удаление тегов HTML и PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 13.7. Обработка запросов Ajax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444 13.8. Интеграция с JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 13.9. Программа: поиск устаревших ссылок . . . . . . . . . . . . . . . . . . . . . . . . . . 449 13.10. Программа: проверка актуальности ссылок . . . . . . . . . . . . . . . . . . . . . 452 Глава 14. Потребление REST-совместимых API . . . . . . . . . . . . . . . . 455 14.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 14.1. Получение данных по URL-адресу методом GET . . . . . . . . . . . . . . . . . . . 457 14.2. Обращение по URL-адресу с методом POST и данными формы . . . . . . . . 460 14.3. Обращение по URL-адресу с произвольным методом и телом POST . . . . 462 14.4. Обращение по URL-адресу с cookie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464 14.5. Обращение по URL-адресу с произвольными заголовками . . . . . . . . . . . 466 14.6. Обращение по URL-адресу с тайм-аутом . . . . . . . . . . . . . . . . . . . . . . . . 467 14.7. Обращение по URL-адресу по протоколу HTTPS . . . . . . . . . . . . . . . . . . . 469 14.8. Отладка низкоуровневой передачи данных HTTP . . . . . . . . . . . . . . . . . 470 14.9. Выдача запросов OAuth 1.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 14.10. Выдача запросов OAuth 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 Глава 15. Предоставление доступа к REST-совместимым API . . . . 480 15.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480 15.1. Предоставление доступа к ресурсу и обработка запроса . . . . . . . . . . . . 483 15.2. Использование «чистых» путей для доступа к ресурсам . . . . . . . . . . . . 486 15.3. Предоставление доступа к ресурсу для чтения . . . . . . . . . . . . . . . . . . . 487 15.4. Создание ресурса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 15.5. Редактирование ресурса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 15.6. Удаление ресурса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 15.7. Сообщения об ошибках и сбоях . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 15.8. Поддержка нескольких форматов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 Глава 16. Сервисы Интернета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 16.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 16.1. Отправка почты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504 16.2. Отправка почты с контентом MIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506 16.3. Чтение почты с использованием протокола IMAP или POP3 . . . . . . . . . . 507 16.4. Получение и отправка файлов с использованием протокола FTP . . . . . . 512 16.5. Поиск адресов с использованием LDAP . . . . . . . . . . . . . . . . . . . . . . . . . 514 16.6. Использование сервера LDAP для аутентификации пользователей . . . . 516 16.7. Выполнение поиска DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519 16.8. Проверка доступности хоста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521 16.9. Получение информации о доменном имени . . . . . . . . . . . . . . . . . . . . . . 522 Глава 17. Графика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 17.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525 17.1. Рисование линий, прямоугольников и многоугольников . . . . . . . . . . . . . 529 17.2. Рисование дуг, эллипсов и кругов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 17.3. Рисование узорных линий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533 17.4. Вывод текста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534 17.5. Выравнивание текста по центру . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 17.6. Построение динамических изображений . . . . . . . . . . . . . . . . . . . . . . . . 540 17.7. Назначение и получение цвета прозрачности . . . . . . . . . . . . . . . . . . . . 542 17.8. Наложение водяных знаков................................... 543 17.9. Создание миниатюр . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 17.10. Чтение данных EXIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549 17.11. Защита изображений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551 17.12. Программа: генерирование гистограммы по результатам опроса . . . . . 553 Глава 18. Безопасность и шифрование . . . . . . . . . . . . . . . . . . . . . . . 557 18.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557 18.1. Предотвращение фиксации сеанса . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 18.2. Защита от фальсификации форм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 18.3. Обеспечение фильтрации входных данных . . . . . . . . . . . . . . . . . . . . . . 561 18.4. Предотвращение межсайтовых сценарных атак . . . . . . . . . . . . . . . . . . . 562 18.5. Предотвращение внедрения SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563 18.6. Хранение паролей отдельно от файлов . . . . . . . . . . . . . . . . . . . . . . . . 563 18.7. Хранение паролей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564 18.8. Восстановление утраченных паролей . . . . . . . . . . . . . . . . . . . . . . . . . . 568 18.9. Проверка данных с использованием хешей . . . . . . . . . . . . . . . . . . . . . . 570 18.10. Шифрование и дешифрование данных . . . . . . . . . . . . . . . . . . . . . . . . 571 18.11. Хранение шифрованных данных в файле или в базе данных . . . . . . . . 574 18.12. Обмен зашифрованными данными с другим сайтом . . . . . . . . . . . . . . . 577 18.13. Обнаружение SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579 18.14. Шифрование электронной почты и GPG . . . . . . . . . . . . . . . . . . . . . . . 580 Глава 19. Интернационализация и локализация . . . . . . . . . . . . . . . 583 19.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 19.1. Определение локального контекста пользователя . . . . . . . . . . . . . . . . . 585 19.2. Локализация текстовых сообщений . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586 19.3. Локализация даты и времени . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 19.4. Локализация числовых данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 19.5. Локализация денежных сумм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596 19.6. Локализация графики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 598 19.7. Локализация включаемых файлов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 19.8. Сортировка с учетом локального контекста . . . . . . . . . . . . . . . . . . . . . . 600 19.9. Управление ресурсами локализации . . . . . . . . . . . . . . . . . . . . . . . . . . . 601 19.10. Выбор кодировки символов для выходных данных . . . . . . . . . . . . . . . . 603 19.11. Назначение кодировки символов для входных данных . . . . . . . . . . . . . 604 19.12. Работа с текстом в кодировке UTF-8 . . . . . . . . . . . . . . . . . . . . . . . . . . 605 Глава 20. Обработка ошибок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610 20.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610 20.1. Поиск и исправление ошибок разбора . . . . . . . . . . . . . . . . . . . . . . . . . . 611 20.2. Создание классов исключений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 613 20.3. Вывод трассировки стека . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616 20.4. Чтение конфигурационных переменных . . . . . . . . . . . . . . . . . . . . . . . . 619 20.5. Присваивание значений конфигурационным переменным . . . . . . . . . . . 621 20.6. Сокрытие сообщений об ошибках от пользователей . . . . . . . . . . . . . . . 621 20.7. Настройка обработки ошибок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 20.8. Применение пользовательских обработчиков ошибок . . . . . . . . . . . . . . 626 20.9. Регистрация ошибок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627 20.10. Устранение ошибок «заголовки уже отправлены» . . . . . . . . . . . . . . . . 628 20.11. Сохранение отладочной информации . . . . . . . . . . . . . . . . . . . . . . . . . 630 Глава 21. Технология программирования . . . . . . . . . . . . . . . . . . . . . 633 21.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 21.1. Использование отладочного расширения . . . . . . . . . . . . . . . . . . . . . . . 633 21.2. Написание модульного теста . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636 21.3. Написание пакета модульных тестов . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 21.4. Применение модульного теста к веб-странице . . . . . . . . . . . . . . . . . . . 640 21.5. Настройка среды тестирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642 21.6. Использование встроенного веб-сервера . . . . . . . . . . . . . . . . . . . . . . . 643 Глава 22. Оптимизация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646 22.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646 22.1. Использование акселератора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647 22.2. Хронометраж выполнения функций . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 22.3. Хронометраж функций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 22.4. Хронометраж по командам . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 22.5. Хронометраж по секциям . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653 22.6. Профилирование с отладочным расширением . . . . . . . . . . . . . . . . . . . . 655 22.7. Нагрузочное тестирование сайта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 22.8. Альтернативы для регулярных выражений . . . . . . . . . . . . . . . . . . . . . . 660 Глава 23. Регулярные выражения . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 23.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 23.1. Переход с ereg на preg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667 23.2. Поиск слов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 23.3. Поиск n-го совпадения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670 23.4. Выбор между максимальным и минимальным совпадением . . . . . . . . . . 672 23.5. Поиск в файле всех строк, соответствующих шаблону . . . . . . . . . . . . . . 674 23.6. Выделение текста из тегов HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675 23.7. Незахватывающие круглые скобки . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677 23.8. Экранирование специальных символов в регулярных выражениях . . . . 678 23.9. Чтение записей с разделителями-шаблонами . . . . . . . . . . . . . . . . . . . . 679 23.10. Использование функции PHP в регулярном выражении . . . . . . . . . . . . 681 Глава 24. Файлы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 24.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683 24.1. Создание или открытие локального файла . . . . . . . . . . . . . . . . . . . . . . 687 24.2. Создание временного файла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688 24.3. Дистанционное открытие файла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 24.4. Чтение из стандартного ввода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690 24.5. Чтение файла в строку . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691 24.6. Подсчет строк, абзацев или записей в файле . . . . . . . . . . . . . . . . . . . . 692 24.7. Обработка каждого слова в файле . . . . . . . . . . . . . . . . . . . . . . . . . . . . 696 24.8. Выбор случайной строки из файла . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 24.9. Случайная перестановка всех строк в файле . . . . . . . . . . . . . . . . . . . . . 698 24.10. Обработка текстовых полей переменной длины . . . . . . . . . . . . . . . . . 698 24.11. Чтение конфигурационных файлов . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 24.12. Изменение файла «на месте» без использования временного файла . . 702 24.13. Сброс буферизованного вывода в файл . . . . . . . . . . . . . . . . . . . . . . . . 704 24.14. Запись в стандартный вывод . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705 24.15. Одновременная запись по нескольким файловым дескрипторам . . . . . 706 24.16. Экранирование метасимволов командного процессора . . . . . . . . . . . . 707 24.17. Передача входных данных программе . . . . . . . . . . . . . . . . . . . . . . . . . 708 24.18. Получение стандартного вывода от программ . . . . . . . . . . . . . . . . . . . 709 24.19. Получение стандартного потока ошибок от программы . . . . . . . . . . . . 711 24.20. Блокировка файла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712 24.21. Чтение и запись нестандартных типов файлов . . . . . . . . . . . . . . . . . . 715 24.22. Чтение и запись сжатых файлов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 Глава 25. Каталоги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 25.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 25.1. Чтение и запись временных меток . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724 25.2. Чтение метаданных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725 25.3. Изменение разрешений или владельца файла . . . . . . . . . . . . . . . . . . . . 727 25.4. Получение компонентов имени файла . . . . . . . . . . . . . . . . . . . . . . . . . . 728 25.5. Удаление файла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729 25.6. Копирование и перемещение файла . . . . . . . . . . . . . . . . . . . . . . . . . . . 730 25.7. Обработка всех файлов в каталоге . . . . . . . . . . . . . . . . . . . . . . . . . . . . 730 25.8. Получение списка файлов по шаблону . . . . . . . . . . . . . . . . . . . . . . . . . 732 25.10. Создание новых каталогов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734 25.11. Удаление каталога и его содержимого . . . . . . . . . . . . . . . . . . . . . . . . 735 25.12. Программа: вывод содержимого каталога веб-сервера . . . . . . . . . . . . 736 25.13. Программа: поиск по сайту . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740 Глава 26. PHP в режиме командной строки . . . . . . . . . . . . . . . . . . . 743 26.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743 26.1. Разбор аргументов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745 26.2. Разбор аргументов функцией getopt . . . . . . . . . . . . . . . . . . . . . . . . . . . 746 26.3. Чтение с клавиатуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748 26.4. Выполнение кода PHP для каждой строки входного файла . . . . . . . . . . 750 26.5. Чтение паролей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752 26.6. Консольный вывод в цвете . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755 26.7. Программа: DOM Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756 Глава 27. Пакеты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760 27.0. Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760 27.1. Определение и установка зависимостей Composer . . . . . . . . . . . . . . . . . 763 27.2. Поиск пакетов Composer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764 27.3. Установка пакетов Composer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766 27.4. Использование программы установки PEAR . . . . . . . . . . . . . . . . . . . . . . 769 27.5. Поиск пакетов PEAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772 27.6. Поиск информации о пакете . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774 27.7. Установка пакетов PEAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775 27.8. Обновление пакетов PEAR.................................... 777 27.9. Удаление пакетов PEAR...................................... 778 27.10. Установка пакетов PECL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780 Об авторах . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782 Помоги нашему сайту на расходы за сервер и качай торренты НЕОГРАНИЧЕННО!Пожертвовать 100 ₽ ![]() Или 2204 1201 2214 8816, с комментарием "Помощь трекеру" Связь с администрацией |
Страница 1 из 1 |
![]() |
|