Оглавление
Об авторах
Введение
Глава 1. Обзор PHP
Почему PHP?
Эволюция PHP
PHP в прошлом
PHP в настоящее время
PHP на арене
Перспективы PHP
PHP в сравнении с другими языками сценариев
PHP и ASP
PHP и Cold Fusion
PHP и Perl
PHP и Java
Лицензирование PHP
Список ресурсов
Глава 2. Установка
PHP уже установлен
Действия перед установкой
Решения, принимаемые в процессе установки
Выбор операционной системы
Модуль или CGI?
Какой веб-сервер выбрать?
Установка MySQL, Apache и PHP
Установка под Windows
Установка MySQL
Установка Apache
Установка PHP
Настройка Apache для работы с PHP
Тестирование установки PHP
Действия после установки
Установка PHP в качестве модуля Apache56
Установка на UNIX-подобных системах
Установка MySQL
Установка Apache
Установка PHP
Действия после установки
Интеграция PHP с Apache
Установка под Mac OS X
Подготовка к установке
Установка MySQL
Установка Apache
Установка PHP
Действия после установки
Интеграция PHP с Apache
Компиляция автономного PHP
Дополнительные ресурсы
Резюме
Глава 3. Основы PHP
Программы PHP
Основы работы с файлами
Операторы
Комментарии
Литералы
Текстовые литералы
Встроенные документы
Числовые литералы
Булевы литералы
Переменные
Присваивание
Ссылки
Константы
Типы данных
Преобразование типа
Операторы и функции
Общие операции
Операции над строками
Строковые функции
Операции над числами
Логические операторы
Массивы
Переменные из внешнего мира
Резюме
Глава 4. Структуры в PHP
Структуры, управляющие порядком выполнения программы
Условные операторы
Циклы
Функции
Определение функций
Область видимости переменных
Время жизни переменных
Рекурсия
Присваивание функций переменным
Структурирование кода с помощью функций
Комментарии
Массивы
Инициализация массивов
Обход массивов в цикле
Встроенные функции массивов
Предопределенные массивы
Многомерные массивы
Резюме
Глава 5. Объектно-ориентированное программирование в PHP
Объектно-ориентированное программирование
Сравнение функциональных и объектно-ориентированных программ
Значение ООП
Нисходящий подход к разработке программ
Классы
Объекты
Инкапсуляция
Наследование
Полиморфизм
Сцепление и связывание
Моделирование объектов с помощью UML
Делегирование
Важные эвристики и проектные решения
Функции PHP для работы с классами
Ограничения PHP
Моделирование сложных веб-компонентов
Резюме
Глава 6. Отладка
Обзор ошибок программирования
Синтаксические ошибки
Семантические ошибки
Логические ошибки
Ошибки окружения
Уровни ошибок в PHP
Ошибки синтаксического анализа
Неисправимые ошибки
Предупреждения
Уведомления
Ошибки ядра
Ошибки компиляции
Пользовательские уровни ошибок
Установка уровней сообщений об ошибках
Обработка ошибок
Подавление вывода сообщений об ошибках
Восстановление после ошибок
Переопределение проверки ошибок
Регистрация ошибок
Утилиты отладки
Средства отладки HTTP
Отладка с помощью трассировки
Удаленные отладчики
Тестирование сценариев
Резюме
Глава 7. Данные, вводимые пользователем,
и регулярные выражения
Ввод данных пользователем
Формы
Обработка данных, введенных пользователем
Сложные формы
Проверка корректности данных
Регулярные выражения
Базовый синтаксис
Создание регулярного выражения
Регулярные выражения в PHP
Регулярные выражения, совместимые с Perl
Резюме
Глава 8. Сеансы и cookies
Сеансы
Добавление поддержки сеансов в PHP
Использование сеансов PHP
Открытие сеансов
Регистрация переменных сеансов
Создание собственных функций для поддержки сеансов
URL
Проблемы безопасности
Cookies
Проблемы безопасности
Применение cookies
Пример приложения, использующего cookies
setcookie()
Удаление cookie
Объединение данных cookie
Проблемы, связанные с cookies
Некоторые дополнительные функции сеанса
Резюме
Глава 9. Работа с файлами
Файлы
Открытие файлов
Закрытие файлов
Отображение файлов
Чтение из файлов
Запись в файлы
Перемещение по файлам
Копирование, удаление и переименование файлов
Определение атрибутов файла
Каталоги
Создание и удаление каталогов
Загрузка файлов клиента на сервер
Загрузка файлов на сервер с помощью PUT
Загрузка файлов на сервер с помощью POST
Пример приложения, работающего с файловой системой
Приложение для хранения данных на сервере
Резюме
Глава 10. Кодирование клиентов FTP
Включение поддержки FTP в PHP
Расширение FTP в PHP
Создание клиентов FTP
Вспомогательная оболочка FTP
Веб-клиент FTP
Создание клиента
Обзор функций по области их применения
Открытие и закрытие соединений
Команды для каталогов
Команды для работы с файлами
Разные функции
Алфавитный справочник по функциям
Стандартные команды клиента FTP и соответствующие функции PHP
Резюме
Глава 11. Электронная почта и телеконференции
Как работает электронная почта
Не слишком секретные агенты
Сообщение электронной почты без тайн
Поля заголовка сообщения электронной почты
Отправка электронной почты с помощью команды mail()
Сообщения MIME
Создание класса My_Smtp_Mime_Mail
Usenet
Как работает Usenet
Пример сеанса NNTP
Коды ответов сервера NNTP
Анатомия статьи в телеконференции
Создание класса NNTP
Объединяем все вместе
Ресурсы
Резюме
Глава 12. Получение электронной почты и статей телеконференций
Протоколы для получения электронной почты
POP
IMAP
Сравнение POP и IMAP
Получение электронной почты с помощью PHP
Соединение с сервером
Создание класса Webmail
Получение списка почтовых сообщений или статей
Вывод списка сообщений в классе Webmail
Получение сообщений
Чтение сообщений с помощью класса Webmail
Действия с почтовыми ящиками
Операции с почтовыми ящиками, основанные на классе Webmail
Действия с сообщениями
Операции с сообщениями, основанные на классе Webmail
Система электронной почты, основанная на веб-службе
Ресурсы
Резюме
Глава 13. Сетевое взаимодействие и TCP/IP
Протокол Интернета
Протоколы транспортного уровня
Протокол управления передачей (TCP)
Протокол пользовательских дейтаграмм (UDP)
Разрешение доменных имен
Распределенная иерархическая система
DNS и PHP
Библиотека клиента DNS
Сокеты
Сокеты и PHP
Приложение почтового клиента
Сетевая информационная служба
Серверы NIS
Клиенты NIS
Карты NIS
NIS и PHP
Простой протокол сетевого управления (SNMP)
Агенты и администраторы
Операции протокола SNMP
Структура данных SNMP
Функции SNMP в PHP
Резюме
Глава 14. LDAP
Общее представление о каталогах
LDAP
LDAP и обычные базы данных
Составляющие LDAP
Характеристики LDAP
Приложения LDAP
Некоторые термины, используемые в LDAP
Модели LDAP
Дополнительные функции LDAP
Программное обеспечение для LDAP
Установка и настройка сервера LDAP
Тестирование установки
Поддержка LDAP в PHP
API LDAP, предоставляемый PHP
Пример приложения LDAP на PHP
Резюме
Глава 15. Введение в разработку многозвенных приложений
Эволюция веб-приложений
Многозвенная архитектура
Уровень содержимого
Уровень логики
Уровень представления
Экспансия устройств, подключаемых к Интернету
Архитектуры для разработки многозвенных приложений
Архитектура, основанная на HTML
Архитектура, основанная на XML
Разделение уровней
Модульное программирование
Независимость логики и представления
Независимость логики и содержимого
Независимость от типа базы данных
Проектирование приложения для опроса
Проектирование модели данных
Классическая многозвенная архитектура
Резюме
Глава 16. Практический пример приложения WAP
Анализ технических требований
Взаимодействие с конечным пользователем
Выбор программного обеспечения
Возможные варианты базы данных сервера
Альтернативные варианты среднего звена
Разработка схемы базы данных
Таблицы базы данных
Пользователь базы данных
Индексы
Анализ архитектуры среднего звена
Аутентификация
Хранение сеанса
WML
Производительность
Реализация
Код приложения
Резюме
Глава 17. PHP и MySQL
Реляционные базы данных
Индексы
Ключи
Нормализация
Структурированный язык запросов
Команды определения данных
Команды обработки и извлечения данных
Объединения
Применение индексов
Атомарность
PHP и реляционные базы данных
Интерфейс PHP к MySQL
Сетевая библиотека
Абстракция базы данных
Резюме
Глава 18. PHP и PostgreSQL
Основы PostgreSQL
Команды определения данных
Команды обработки и извлечения данных
Интерфейс PHP к PostgreSQL
Сетевая библиотека
Абстракция базы данных
Резюме
Глава 19. PHP и ODBC
История и задачи ODBC
Архитектура ODBC
Стандарты SQL
ODBC и установка PHP под Windows
ODBC и установка PHP в UNIX
Статический модуль Apache
API PHP для ODBC
Соединение с базой данных
Действия с метаданными
Обработка транзакций
Выборка данных и курсоры
Часто возникающие проблемы
Необходимые настройки для соединений ODBC
MS SQL Server
MS Access
Создание соединения
Абстракция базы данных
Unified ODBC
PEARDB
ADODB
Metabase
Сетевая библиотека
Резюме
Глава 20. PHP-программирование приложений,
не связанных с Интернетом
Что такое GTK?
Что такое PHP-GTK?
PHP в командной строке
Установка под Linux
Поддержка PHP-GTK
Установка под Windows
Автоматизация заданий
Стандартный формат журнала NCSA
cron
AT
Передача аргументов в командной строке
Интерактивные сценарии
Программирование с помощью PHP-GTK
Ключевые понятия PHP-GTK
Пример Hello World
Клиент приложения библиотеки
Ресурсы
Резюме
Глава 21. PHP XML
Обзор XML
Структура семейства XML
XML в сравнении с базами данных
SML
Преобразование XML в SML
PHP и XML
Проверка поддержки XML
Сравнение API XML
Модель SAX
Модель DOM
Модель RAX
XSL и XSLT
Sablotron
Установка и проверка XSL
Пример кода XSL
Резюме
Глава 22. Интернационализация
Понятия
Интернационализация
Локализация
Поддержка родных языков
Основания для интернационализации
Задача
Строки
Статические строки
Динамические строки
Хранение строк
GNU Gettext
Основы
xgettext и вспомогательные утилиты
Модификация перевода
Недостатки Gettext
Расширение системы с помощью объектов
Преимущества объектов
Использование объектов и переключение между языками
Преобразование имеющихся программ
Непереведенная программа
Перевод программы
Применение объектов для диверсификации перевода
Интеграция класса вывода и сценария
Уточнение сценария
Регулярные выражения
Выделение заглавными буквами
Время и дата в национальном формате
Извлечение информации с помощью localeconv()
Сортировка
Пользовательская функция сравнения
Кодировка символов
Вывод с учетом локали
Строки многобайтовых символов
PHP Weather: практический пример
Резюме
Глава 23. Система безопасности
Что такое система безопасности?
Безопасность сервера
Укрепление сервера
Мониторинг системы
Отслеживание новых уязвимостей
Система безопасности Apache
Директива User
Директива Directory
Укрепление Apache
Безопасность и PHP
Соображения безопасности при установке CGI
Настройка PHP
Безопасный режим
Безопасность и MySQL
MySQL и пользователь root
Уборка
Управление пользователями MySQL
Криптография
Однонаправленное шифрование
Симметричное шифрование
Асимметричное шифрование
Сетевая безопасность
Apache mod_ssl
Создание безопасных программ
Небезопасность register_globals
Доверие к данным, вводимым пользователем
Уязвимость типа Cross-Site Scripting
Коварство include
Некоторые советы
Резюме
Ресурсы и материалы для дальнейшего изучения
Защита серверов Linux
Защищенные оболочки
Tripwire
Безопасность и Apache
Безопасность и PHP
Безопасность и MySQL
Криптография
mod_ssl
Создание безопасных программ
Веб-сайты, посвященные проблемам безопасности
Прочие
Глава 24. Оптимизация
Выбор правильного языка
Тесты
Оптимизация кода PHP
Профилирование кода
Классификация узких мест
Техника оптимизации
Оптимизация кода
Буферизация вывода и сжатие данных
Оптимизация баз данных
Кэширование
Оптимизация ядра PHP
Резюме
Глава 25. Библиотеки расширений PHP
Библиотека PDF
Установка
Работа с PDFlib
Macromedia Flash
Ming и LibSWF
Работа с Ming
WAP и WML
Есть ли для этого библиотека?
Работа с HAWHAW
Создание и обработка графических образов
Установка библиотеки GD
Работа с GD
Создание с помощью GD счетчика посещений
Резюме
Глава 26. Система пользовательских полномочий
Определение технических требований
Технические требования к приложению
Проектирование приложения
Разработка схемы базы данных
Проектирование среднего звена
Проектирование уровня представления
Кодирование приложения
Код для базы данных
Класс Privilege
Класс User
Тестирование классов
Применение системы пользовательских полномочий
Другие соображения относительно системы пользовательских полномочий
Резюме
Алфавитный указатель