В книге приведены исчерпывающие сведения по созданию динамических Web-узлов на основе программных средств, предоставляемых бесплатно в общее пользование (языка PHP, сервера Apache и СУБД MySQL), а также показано, как обеспечить бесперебойную эксплуатацию таких узлов под управлением операционной системы Windows или Linux. Многочисленные сценарии и готовые программы, представленные в книге, подробно описаны, тщательно прокомментированы и составляют основу практически значимых приложений. Книга дополняет оперативную документацию, содержит все необходимые справочные данные и рассчитана на широкий круг читателей.
Название: PHP 5 и MySQL. Библия пользователя Автор: Тим Конверс, Джойс Парк, Кларк Морган Издательство: Вильямс Год: 2006 Страниц: 1206 Формат: PDF Размер: 36,6 МБ ISBN: 5-8459-1022-6 Качество: Хорошее Серия или Выпуск: Библия пользователя
Содержание:
Предисловие Общее определение языка РНР Преимущества языка РНР Новое в этом издании Новые средства в версии РНР5 Сведения о СУБД MySQL, приведенные в книге Другие дополнительные материалы Краткие сведения об авторах Общая направленность книги Отсутствие в книге сведений, которые можно найти в оперативном руководстве по языку РНР Структура книги Часть I «Основы языка РНР» Часть II «РНР и MySQL» Часть III «Расширенные средства и методы» Часть IV «Взаимодействие РНР с другими системами» Часть V «Учебные проекты» Приложения Соглашения, используемые в этой книге Пояснения к пиктограммам Web-узел и примеры кода Благодарности Об авторах ЧАСТЬ I. ОСНОВЫ ЯЗЫКА РНР Глава 1. Преимущества системы РНР и СУБД MySQL Краткое описание языка РНР Краткое описание СУБД MySQL История развития языка РНР История развития СУБД MySQL Причины, по которым использование системы РНР и СУБД MySQL является наиболее целесообразным Стоимость Удобство в использовании Использование кода РНР, встроенного в код HTML Межплатформенная совместимость Отсутствие в языке синтаксических конструкций, основанных на использовании дескрипторов Стабильность Быстродействие Лицензирование программного обеспечения с открытым исходным кодом Большое количество расширений Быстрая реализация новых средств Широкий круг пользователей Отсутствие закрытых стандартов Многочисленное сообщество пользователей Резюме Глава 2. Создание серверных сценариев для Web Статические HTML-страницы Клиентские технологии Средства поддержки серверных сценариев Области применения средств поддержки серверных сценариев Резюме Глава 3. Подготовка к работе с системой РНР Применение Web-хостинга или самостоятельное сопровождение Web-сервера Вариант с использованием услуг провайдера Интернет Преимущества и недостатки варианта с самостоятельным сопровождением сервера Компромиссные решения Инсталляция системы РНР Подготовка к работе Процедуры инсталляции Инструментальные средства разработки Резюме Глава 4. Включение кода PHP в код HTML Совместимость кода HTML с кодом РНР Выход из режима HTML Канонический стиль дескрипторов РНР Дескрипторы с сокращенной открывающей частью (дескрипторы в стиле SGML) Программа, которая шлет миру привет Переход в режим и из режима РНР Включение файлов Резюме Глава 5. Синтаксические конструкции и переменные Соблюдение компромисса между удобством пользования и формальной правильностью в языке РНР Учет различий между синтаксисом HTML и РНР Сходство между синтаксисом РНР и C Невосприимчивость языка РНР к пробельным символам Разные требования к регистру символов в языке РНР в разных контекстах Определение понятия оператора как выражения, оканчивающегося точкой с запятой Применение фигурных скобок для выделения блоков Комментарии Многострочные комментарии в стиле языка C Создание однострочных комментариев с помощью символов # и // Переменные Применение в языке РНР переменных, подобных переменным Perl Использование объявлений переменных (точнее, отказ от таких объявлений) Присваивание значений переменным Повторное присваивание значений переменным Переменные без присвоенных им значений Область определения переменной Отсутствие влияния многократных переключений между режимами РНР и HTML на область определения переменных Константы Применение в языке РНР системы типов, предоставляющей наибольшие удобства пользователю Отсутствие объявлений типов переменных Автоматическое преобразование типов Типизация с учетом контекста Общие сведения о типах Простые типы Целые числа Числа с плавающей точкой двойной точности Логические значения NULL-значение Строки Вывод данных Ключевые слова echo и print Переменные и строки Резюме Глава б. Средства управления и функции Логические выражения Логические константы Логические операции Операции сравнения Трехместная операция Операции ветвления Операция if-else Операция switch Формирование циклов Сравнение ограниченных и неограниченных циклов Конструкция while Конструкция do-while Конструкция for Примеры циклических конструкций Операторы break и continue Примечание, касающееся бесконечных циклов Дополнительные синтаксические конструкции, применяемые для управления кодом выполнения программы Завершение выполнения Использование функций Сопоставление результатов получения возвращаемых значений и побочных эффектов Документация с описанием функций Заголовки в документации Поиск документации к функциям Определение собственных функций Общее определение понятия функции Синтаксическая структура определения функции Пример определения функции Сравнение формальных параметров и фактических параметров Несовпадение количества параметров Функции и область определения переменных Сравнение глобальных и локальных переменных Статические переменные Исключительные ситуации Область определения функции Конструкции include и require Рекурсия Резюме Глава 7. Передача информации между страницами Отсутствие поддержки состояний в протоколе HTTP Параметры GET Лучший способ использования URL в стиле GET Параметры POST Форматирование переменных формы Объединение кода формы и обработчика формы Использование в формах переменных с типом массива Суперглобальные массивы РНР Расширенный пример: калькулятор физических нагрузок Резюме Глава 8. Строки Строки в языке РНР Подстановка значений с использованием фигурных скобок Символы и индексы символов в строках Операции со строками Конкатенация и присваивание Синтаксическая структура вложенного документа Строковые функции Проверка строк Поиск символов и подстрок Сравнение и поиск Поиск Выборка подстроки Функции удаления ненужных символов из строк Замена строк Функции преобразования регистра букв Функции введения управляющих символов Функции вывода на внешнее устройство и в строку Расширенный пример: калькулятор физических нагрузок Резюме Глава 9. Массивы и функции для работы с массивами Области использования массивов Общее определение понятия массивов РНР Создание массивов Непосредственное присваивание Конструкция array() Задание индексов с помощью конструкции array() Функции, возвращающие массивы Выборка значений Выборка с помощью индекса Конструкция list() Многомерные массивы Получение сведений о массивах Удаление элементов из массивов Итерация Поддержка итерации Использование итеративных функций Предпочтительный метод итеративной выборки - конструкция foreach Организация итеративной обработки с помощью функций current() и next() Возобновление работы с помощью функции reset() Организация выборки в обратном порядке с помощью функций end() и prev() Извлечение ключей с помощью функции key() Пустые значения и функция each() Проход по массиву с помощью функции array_walk() Расширенный пример: калькулятор физических нагрузок Резюме Глава 10. Обработка числовых данных Числовые типы Математические операции Арифметические операции Арифметические операции и типы Операции инкремента и декремента Операции присваивания Операции сравнения Правила приоритета и круглые скобки Простые математические функции Выработка случайных чисел Задание начального значения для генератора Пример. Осуществление случайного выбора Расширенный пример. Калькулятор физических нагрузок Резюме Глава 11. Основные секреты отладки кода РНР Проблемы, связанные с инсталляцией Признак нарушения в работе - в окне браузера отображается текст файла Признак нарушения в работе - блоки РНР отображаются при их передаче по протоколу HTTP в виде текста или браузер выводит сообщение о том, что вам следует сохранить файл Признак нарушения в работе - не найден сервер или хост либо страница не может быть отображена Проблемы формирования страницы Признак нарушения в работе - полностью пустая страница Признак нарушения в работе - документ не содержит данных Признак нарушения в работе- неполная страница или страница с непредусмотренными данными Признак нарушения в работе - в окне Web-браузера обнаруживается код РНР Ошибки при загрузке страницы Признак нарушения в работе - страница не может быть найдена Признак нарушения в работе - сообщение Failed opening [file] for inclusion (He удалось открыть [файл] для включения) Ошибки интерпретации Признак нарушения в работе - сообщение об ошибке интерпретации (Parse error) Отсутствие точки с запятой Отсутствие знаков доллара Проблемы, связанные со сменой режима Кавычки, не обозначенные управляющими последовательностями Незавершенные строки Другие причины ошибок интерпретации Права доступа к файлам Признак нарушения в работе - ошибка 403 протокола HTTP Отсутствующие включаемые файлы Признак нарушения в работе - предупреждающее сообщение, касающееся включения файла Переменные с незаданными значениями Признак нарушения в работе - в строке вывода отсутствует значение переменной Признак нарушения в работе - неожиданное обнаружение нулевого значения у числовой переменной Причины появления в программе переменных с незаданными значениями Переменные с переопределенными значениями Признак нарушения в работе - переменная имеет действительное значение, но не то, которого следовало ожидать Проблемы, связанные с использованием функций Признак нарушения в работе - сообщение Call to undefined function my_function() (Вызов неопределенной функции my_function()) Признак нарушения в работе - сообщение Call to undefined function() (Вызов неопределенной функции ()) Признак нарушения в работе - сообщение Call to undefined function array() (Вызов неопределенной функции array()) Признак нарушения в работе - сообщение Cannot redeclare my_function() (Не допускается повторное определение функции my_function ()) Признак нарушения в работе - сообщение Wrong parameter count (Неправильное количество параметров) Проблемы, связанные с выполнением математических операций Признак нарушения в работе- предупреждающее сообщение о делении на нуль Признак нарушения в работе - непредвиденные результаты арифметических операций Признак нарушения в работе - сообщение, в котором упоминается нечисловое значение NaN (или NAN) Тайм-ауты Резюме ЧАСТЬ II. РНР И MYSQL Глава 12. Выбор базы данных для РНР Общее определение базы данных Потребность в использовании базы данных Удобство сопровождения и масштабируемость Переносимость Избавление от громоздких программ Поиск Защита Применение n-уровневой архитектуры Потенциальный недостаток баз данных - низкая производительность Выбор базы данных Ситуации, в которых отсутствует выбор Базы данных - с плоскими файлами, реляционные и объектно-реляционные Сравнение возможностей ODBC/JDBC и собственных API-интерфейсов Оперативная замена баз данных Необходимые дополнительные средства Графический интерфейс пользователя Подзапросы Оператор SELECT INTO Сложные соединения Потоковая организация функционирования и блокировка Транзакционные базы данных Процедуры и триггеры Индексы Внешние ключи и ограничения целостности Репликация баз данных Базы данных, поддерживаемые в системе РНР Унификация доступа к базе данных (или отсутствие такой унификации) Вариант, предпочитаемый авторами, - MySQL Резюме Глава 13. Основные сведения о языке SQL Реляционные базы данных и язык SQL Стандарты языка SQL Основные понятия языка SQL Оператор SELECT Оператор INSERT Оператор UPDATE Оператор DELETE Проектирование базы данных Права доступа и защита Определение прав доступа к базе данных Хранение паролей базы данных за пределами каталогов Web Применение двух уровней парольной защиты Общие сведения о создании резервных копий Резюме Глава 14. Администрирование базы данных MySQL Лицензирование MySQL Инсталляция программного обеспечения MySQL: переход на версию 4 Проблемы, которые должны быть решены до начала инсталляции Загрузка программного обеспечения MySQL Инсталляция MySQL в операционной системе Windows Инсталляция MySQL в операционной системе Unix Инсталляция MySQL в операционной системе Mac OS X Вспомогательные работы, выполняемые после инсталляции Основные клиентские команды MySQL Администрирование учетных записей MySQL Локальный сервер, применяемый для разработки Автономный Web-узел Web-узел на разделяемом хосте Программа PHPMyAdmin Создание резервных копий Репликация Восстановление Утилита myisamchk Утилита mysqlcheck Резюме Глава 15. Функции РНР для работы с СУБД MySQL Подключение к базе данных MySQL Выполнение запросов MySQL Выборка наборов данных Получение данных о данных Поддержка нескольких соединений Реализация средств контроля ошибок Создание баз данных MySQL с помощью языка РНР Типы данных MySQL Функции MySQL Резюме Глава 16. Отображение результатов запросов в таблицах Таблицы HTML и таблицы базы данных Взаимно-однозначное отображение Пример. Программа отображения содержимого одной таблицы Образцы таблиц Усовершенствование программы отображения Сложные отображения Сравнение способов, предусматривающих применение многочисленных запросов или сложных операторов вывода Пример использования нескольких запросов Пример варианта, в котором используются сложные операторы печати Создание образцов таблиц Резюме Глава 17. Создание форм на основе запросов Формы HTML Ввод данных в базу данных с помощью передачи простой формы Возврат данных формы в ту же форму Редактирование данных с помощью формы HTML Элементы TEXT и TEXTAREA Элемент CHECKBOX Элемент RADIO Элемент SELECT Резюме Глава 18. Эффективность РНР и MySQL Принципы эффективного использования соединений Пример неэффективного кода - применение отдельного соединения в расчете на каждый оператор Получение нескольких результирующих наборов с помощью одного соединения Устойчивые соединения Использование индексов и проектирование таблиц Использование индексов Область применения индексов Другие типы индексов Проектирование таблиц Принципы успешного применения базы данных Применение средств повышения быстродействия, предусмотренных в СУБД Пример неэффективной организации программы - выборка данных с помощью цикла, а не условия оператора выборки Создание столбцов с информацией о дате и времени Поиск последней вставленной строки Резюме ' Глава 19. Нарушения в работе совместно используемых средств РНР и MySQL Предупреждающее сообщение об отсутствии соединения Проблемы, связанные с правами доступа Кавычки, не обозначенные с помощью управляющих символов Операторы SQL с синтаксическими ошибками Ошибки в именах переменных Неправильное применение запятых Строковые параметры, не обозначенные кавычками Переменные с неприсвоенными значениями Неправильный объем полученных данных Конкретные функции SQL Сравнение функций mysql_affected_rows() и mysql_num_rows() Функция mysql_result() Функция OCIFetch() Отладка и проверка качества программного обеспечения Резюме ЧАСТЬ III. РАСШИРЕННЫЕ СРЕДСТВА И МЕТОДЫ Глава 20. Средства объектно-ориентированного программирования языка РНР Общее определение объектно-ориентироваиного программирования Краткое описание идеи объектно-ориентированного программирования Развитие темы: объекты как типы данных Развитие темы: наследование Развитие темы: инкапсуляция Развитие темы: конструкторы и деструкторы Терминология Основные конструкции объектно-ориентированного программирования в языке РНР Определение классов Доступ к переменным экземпляра Создание экземпляров Функции-конструкторы Наследование Переопределение функции Использование множественных определений подклассов Модификация и присваивание объектов Принципы использования области определения Дополнительные средства о6ъектно-ориентированного программирования Открытые, закрытые и защищенные переменные экземпляра и методы Интерфейсы Константы Абстрактные классы Моделирование функций класса Вызов методов родительского класса Автоматический вызов конструкторов родительских классов Моделирование перегрузки методов Сериализация Функции самодиагностики Краткий обзор функций Пример: генеалогия классов Пример: установление соответствия между переменными и столбцами базы данных Пример: обобщенные методы проверки Расширенный пример: формы HTML Нарушения в работе и устранение таких нарушений Признак нарушения в работе: переменная экземпляра не получает значения в методе Признак нарушения в работе: сообщение Parse error, expecting T_VARIABLE… Рекомендуемый стиль объектно-ориентированного программирования на языке РНР Соглашения об именовании Функции доступа Разработка классов с учетом наследования Резюме Глава 21. Расширенные функции для работы с массивами Средства преобразования массивов Выборка ключей и значений Зеркальное отображение, обращение и случайное перемешивание Слияние, дополнение, вырезка и вставка элементов массивов Стеки и очереди Прямое и обратное преобразование данных, представленных с помощью переменных и массивов Сортировка Функции вывода, предназначенные для визуального представления массивов Резюме Глава 22. Функции для работы со строками и регулярными выражениями Функции синтаксического анализа и разбиения на лексемы Область применения регулярных выражений Использование регулярных выражений в языке РНР Примеры применения регулярных выражений в стиле POSIX Функции для работы с регулярными выражениями Регулярные выражения, совместимые с языком Perl Пример. Простая программа извлечения ссылок Основное регулярное выражение Использование данного выражения в функции Усовершенствованные строковые функции Функции для работы с кодом HTML Хэширование данных с помощью алгоритма MD5 Строки, рассматриваемые как множества символов Функции, предназначенные для оценки подобия строк Резюме Глава 23. Функции для работы с файловой системой и системные функции Общие сведения об использовании прав доступа к файлам в языке РНР Функции чтения и записи файлов Операция открытия файла Операции чтения файла Разработка сценариев загрузки файлов с помощью функции fpassthru() Операции записи файла Операции закрытия файла Функции для работы с файловой системой и каталогами Функция feof Функция file_exists Функция filesize Сетевые функции Функции ведения системного журнала Функции DNS Функции для работы с сокетами Функции для работы со значениями даты и времени Ситуация, в которой не известны ни дата, ни время Ситуация, в которой дата, время или временная отметка уже определены Функции преобразования дат, относящихся к разным календарным системам Резюме Глава 24. Сеансы, cookie-файлы и протокол HTTP Общее назначение сеанса Проблема поддержки сеанса Необходимость в использовании средств поддержки сеансов Общие принципы решения задачи поддержки сеансов Использование IP-адреса Использование скрытых переменных Основы способа организации сеанса с помощью cookie-файлов Способы организации сеансов в языке РНР Передача интерпретатору РНР информации о сеансе Распространение переменных сеанса Общие сведения о том, где фактически сохраняются данные сеанса Пример кода сеанса Функции поддержки сеанса Проблемы настройки конфигурации Cookie-файлы Использование функции setcookie() Примеры Удаление cookie-файлов Чтение cookie-файлов Использование директивы register_globals и перезапись переменной Нарушения в работе, возникающие при использовании cookie-файлов Передача заголовков HTTP Пример использования заголовка для перенаправления Пример использования заголовка для аутентификации по протоколу HTTP Нарушения в работе, связанные с использованием заголовков Нарушения в работе и поиск неисправностей Резюме Глава 25. Типы и преобразования типов Основные сведения о типах Ресурсы Общее определение понятия ресурса Способы обработки ресурсов Проверка типа Присваивание и приведение типа Целочисленное переполнение Определение наибольшего целого числа Резюме Глава 26. Усовершенствованные способы использования функций Переменное количество параметров Параметры, заданные по умолчанию Использование массивов для замены многочисленных параметров Использование многочисленных параметров в РНР4 и в следующих версиях Вызов по значению Вызов по ссылке Переменные имена функций Более сложный пример Резюме Глава 27. Выполнение математических расчетов Математические константы Проверка правильности представления чисел Преобразование систем счисления Экспоненты и логарифмы Тригонометрические расчеты Вычисление с произвольной точностью (с использованием функций ВС) Пример вычисления с произвольной точностью Преобразование кода в код, допускающий вычисление с произвольной точностью Резюме Глава 28. Репозитарий PEAR Общее описание репозитария PEAR Система пакетов PEAR Примеры пакетов PEAR Принципы работы базы данных PEAR Программа Package Manager Использование программы Package Manager Базовые классы PHP (PFC) Библиотека кода расширений PHP (PECL) Стиль кодирования PEAR Применение отступов, пробельных символов и ограничение длины строки Форматирование управляющих структур Форматирование определений функций и вызовов функций Резюме Глава 29. Защита данных Возможные нападения Компрометация узла Доступ к исходному коду Чтение произвольно выбранных файлов Вызов на выполнение произвольных программ Вирусы и другие электронные вредители Безопасность электронной почты Регистрация глобальных переменных Операции выгрузки файлов Шифрование Шифрование с открытым ключом Шифрование с единственным ключом Шифрование cookie-файлов Хэширование Применение файлов с цифровыми подписями Протокол SSL Информация к размышлению - защита Web-узла Резюме Глава 30. Конфигурация Просмотр значений переменных среды Общее представление о настройке конфигурации РНР Опции, применяемые на этапе компиляции Опции поддержки CGI, применяемые на этапе компиляции Файлы конфигурации Apache Файл php.ini Повышение производительности сценариев РНР Резюме Глава 31. Исключительные ситуации и обработка ошибок Обработка ошибок в версии РНР5 Ошибки и исключительные ситуации Класс Exception Блоки try/catch Активизация исключительной ситуации Определение собственных подклассов Exception Ограничения средств обработки исключительных ситуаций языка РНР Другие способы обработки ошибок Ошибки, обнаруживаемые самим интерпретатором РНР Определение обработчика ошибок Инициирование пользовательской ошибки Ведение журнала и отладка Резюме Глава 32. Отладка Общие стратегии поиска неисправностей Одновременное внесение изменений только в одном месте Ограничение области проявления проблемы Упрощение и последующее усложнение Поиск в первую очередь наиболее очевидных причин нарушений Документирование принятых решений Повторная проверка после устранения ошибки Общая классификация ошибок Ошибки на этапе компиляции Ошибки на этапе выполнения Логические ошибки Использование журналов Web-сервера Сервер Apache Сервер IIS Средства формирования сообщений об ошибках и ведения журнала интерпретатора РНР Формирование сообщений об ошибках Регистрация ошибок Определение категории ошибок, подлежащих выводу на экран или записи в журнал Функции формирования сообщений об ошибках Диагностические операторы вывода Использование функции print_r() Использование функции syslog() Регистрация сообщений в произвольно выбранном файле Использование функции error_log() Визуальные средства отладки Заблаговременное предотвращение ошибок Поиск причин ошибок после того, как они произошли Резюме Глава 33. Стиль Общее назначение стилистических правил Удобство чтения Комментарии Программа PHPDoc Имена файлов и переменных Единообразие стиля Удобство сопровождения Предотвращение использования магических чисел Функции Включаемые файлы Объектные оболочки Принятие решения об использовании средств управления версиями Надежность Недоступность внешней службы Неправильное использование типов переменных Эффективность и краткость Эффективность, зависящая от используемого алгоритма Рекомендации по повышению эффективности Оборотная сторона краткости Рекомендации по написанию кратких программ Преимущества и недостатки использования режимов HTML и РНР Стиль с минимальным использованием кода РНР Стиль с максимальным использованием кода РНР Стиль с умеренным использованием кода РНР Стиль с вложенными документами Отделение средств обработки данных от средств вывода данных Функции Применение каскадных таблиц стилей в РНР Обеспечение единообразия внешнего вида страниц с использованием шаблонов Резюме ЧАСТЬ IV. ВЗАИМОДЕЙСТВИЕ РНР С ДРУГИМИ СИСТЕМАМИ Глава 34. СУБД PostgreSQL Преимущества и недостатки СУБД PostgreSQL Основные особенности объектно-реляционных СУБД Инсталляция СУБД PostgreSQL Инсталляция в системе Linux Создание базы данных PostgreSQL Рассмотрение конкретных примеров Обеспечение взаимодействия интерпретатора РНР и СУБД PostgreSQL База данных мультфильмов Резюме Глава 35. СУБД Oracle Области применения СУБД Oracle Обработка финансовой информации Другие операции параллельной обработки данных Огромные наборы данных Применение большого количества стереотипных операций записи или обработки данных Триггеры Правовая ответственность Общий итог - прогноз на два года СУБД Oracle и структура программного обеспечения для Web Включение в состав коллектива специалистов узкого профиля Базы данных, совместно используемые для разработки Ограничения в части изменения схемы Инструментальные средства (или их отсутствие) Репликация и возобновление нормальной работы после сбоя Кэширование данных Использование функции OCI8 Применение в строках символов переключения режима Синтаксический анализ и выполнение операторов Передача сообщений об ошибках Управление памятью Передача требования по использованию неопределенных значений Выборка всего набора данных Применение только прописных букв Поддержка транзакций Хранимые процедуры и курсоры Проект. Программа редактирования отдельных записей Проект. Программа редактирования группы записей о товарах Резюме Глава 36. Функции PEAR для работы с базами данных Сомнительные преимущества подхода, направленного на достижение независимости от базы данных Собственное средство связи с базой данных Универсальное средство доступа к базе данных Определения основных понятий PEAR DB Имя источника данных Соединение Запрос Выборка строки Разъединение Законченный пример Функции пакета PEAR DB Методы класса DB Методы класса DB_Common Методы класса DB_Result Резюме Глава 37. Электронная почта Общее описание работы электронной почты Сервер TCP/IP Почтовый передающий агент, или сервер SMTP Почтовая очередь Агент пользователя почты, или локальный почтовый клиент Программа выборки почты, или сервер РОРЛМАР Диспетчер списков рассылки Получение электронной почты с помощью интерпретатора РНР Реализация клиентского приложения с нуля Модификация кода РНР, разработанного другими программистами «Косметические» изменения Отправка электронной почты с помощью языка РНР Настройка конфигурации Windows Настройка конфигурации Unix Функция mail Дополнительные возможности передачи электронной почты с помощью интерпретатора РНР Отправка почты из формы Отправка почты с использованием данных из базы данных Передача вложений с использованием почтового стандарта MIME Специализированное почтовое приложение РНР Отправка почты с помощью задания cron Нарушения в работе почты Резюме Глава 38. Языки РНР и JavaScript Вывод кода JavaScript с помощью сценария РНР Несовместимые объекты Широкие возможности вывода данных в языке РНР Области применения языка JavaScript Резервирование функциональных средств кода JavaScript с помощью кода РНР Сравнение методов статического и динамического формирования кода JavaScript Динамически сгенерированные формы Передача данных в обратном направлении, из кода JavaScript в код РНР Резюме Глава 39. Языки РНР и Java Общие сведения о языке РНР для программистов, работающих на языке Java Общие особенности двух языков Различия между двумя языками Сравнение технологий JSP и РНР Руководство по использованию данной книги для программистов, работающих на языке Java Совместное использование средств языков РНР и Java Интеграция с использованием модуля SAPI сервлетов Java Расширение Java Объект Java Ошибки и исключительные ситуации Потенциальные нарушения в работе Безграничные возможности Резюме Глава 40. Языки PHP и XML Общее определение технологии XML Практическое применение языка XML Документы и определения типов документов Структура определения DTD Синтаксические анализаторы с проверкой допустимости и без проверки допустимости Сравнение API-интерфейсов SAX и DOM API-интерфейс DOM Применение DOM XML Функции DOM API-интерфейс SAX Применение API-интерфейса SAX Опции настройки конфигурации SAX Функции API-интерфейса SAX API-интерфейс SimpleXML Использование API-интерфейса SimpleXML Функции API-интерфейса SimpleXML Типичное приложение XML Нарушения в работе и способы их устранения Резюме Глава 41. Web-службы Конец того программирования, которое мы знаем Грустная правда об обработке данных Основные понятия Web-служб Технологии REST, XML-RPC, SOAP и .NET Стандарт REST Стандарт XML-RPC Стандарт SOAP Службы .NET Современные проблемы Web-служб Громоздкое и медленно действующее программное обеспечение Возможное возрастание нагрузки Подготовка стандартов Переход от игры в прятки к целенаправленному поиску Решение проблем оплаты услуг Web-служб Проект. Клиент REST Проект. Сервер и клиент SOAP Резюме Глава 42. Графика Возможности графических средств РНР Графика HTML Использование библиотеки gd для создания изображений Общее описание библиотеки gd Форматы изображений и браузеры Выбор версии Инсталляция Основные принципы работы с библиотекой gd Функции библиотеки gd Поддержка средств передачи изображений в протоколе HTTP Пример. Фрактальные изображения Возможные нарушения в работе и способы их устранения Признак нарушения в работе - полностью пустое изображение Признак нарушения в работе - сообщение Headers already sent Признак нарушения в работе - изображение, имеюшее неправильный формат Резюме ЧАСТЬ V. УЧЕБНЫЕ ПРОЕКТЫ Глава 43. Web-журналы Общее назначение узлов для ведения Web-журналов Простейший Web-журнал Ввод в действие инструментального средства редактирования по протоколу HTML Ввод в действие средств обмена информацией с базой данных Предлагаемые изменения и дополнения Резюме Глава 44. Аутентификация пользователей Проектирование системы аутентификации пользователей Предотвращение возникновения наиболее распространенных проблем защиты Отмена директивы register_globals Проверка строки по признакам длины и безопасности Однонаправленное шифрование паролей Регистрация Вход в систему и выход из нее Инструментальные средства пользователя Восстановление забытого пароля Внесение изменений в конфиденциальные данные о пользователе Редактирование неконфиденциальных данных о пользователе Инструментальные средства администратора Основные методы авторизации - с помощью базовой авторизации, cookie-файлов, базы данных и IP-адреса Вход в систему под именем определенного пользователя Резюме Глава 45. Система рейтинговых оценок Первоначальный проект Проблемная область - узел, на котором публикуются интересные цитаты Возможные значения оценок Установление связи между оценками и оцениваемым информационным наполнением Сбор результатов голосования Обобщение полученных результатов Дополнения и альтернативы Резюме Глава 46. Несложная игра Понятия, рассматриваемые в данной главе Описание игры Версия игры, рассматриваемая в данной книге Примеры экранов Правила игры Возможность предварительно опробовать силы в игре Описание приложения Файлы кода Создание базы данных Общие проектные требования Разделение функционального кода и кода, предназначенного для формирования внешнего представления Постоянное хранение данных Обработка исключительных ситуаций Резюме Глава 47. Преобразование статических HTML-узлов Планирование крупного обновления Принцип сохранения всего самого лучшего Техническая оценка Перепроектирование пользовательского интерфейса Планирование новой схемы базы данных Ввод данных в базу данных Обработка данных Ввод данных в базу данных Сбор данных Подготовка шаблонов Производительность и кэширование Кэширование Резюме Глава 48. Визуализация данных с помощью диаграмм Венна Масштабированные диаграммы Венна Постановка задачи Общее описание кода Необходимые сведения из тригонометрии Подготовка к выводу на дисплей Упрощающее предположение Определение размеров и масштабов Вывод на экран Визуальное представление данных из базы данных Проверка работы приложения Расширения Резюме Приложение А. Краткие сведения о языке РНР для программистов, работающих на языке C Сходства Синтаксис Операции Управляющие структуры Совпадающие имена функций Различия Непривычные знаки доллара Типы Преобразование типов Массивы Отсутствие такого типа данных, как структура Объекты Отсутствие указателей Отсутствие прототипов Управление памятью Компиляция и связывание Отсутствие строгого контроля ошибок Руководство по изучению данной книги Дополнительное поощрение - возможность сразу же приступить к изучению кода Приложение Б. Краткие сведения о языке РНР для программистов, работающих на языке Perl Сходства Компилируемые языки сценариев Синтаксис Переменные, обозначаемые знаком доллара Отсутствие объявлений переменных Свободная типизация переменных Строковые данные и подстановка значений переменных Различия Применение операторов РНР в виде кода, внедренного в код HTML Отсутствие переменных, отмечаемых знаком @ или % Сравнение простых массивов с хэш-массивами Задание параметров функций Области определения переменных в функциях Отсутствие системы модулей как таковой Применение конструкций break и continue вместо конструкций next и last Отсутствие конструкции elsif Дополнительное количество способов комментирования Регулярные выражения Дополнительные рекомендации Отсутствие аналогов директив use strict и use vars Наличие репозитария, сравнимого с архивом CPAN Руководство по изучению данной книги Приложение В. Краткие сведения о языке РНР для программистов, использующих язык HTML Факторы, способствующие изучению языка РНР Предварительное знакомство с языком HTML Удобство освоения РНР в качестве первого языка программирования Все более широкое использование готового кода в разработке приложений для Web Факторы, препятствующие изучению языка РНР Сложности, возникающие при изучении программирования Дополнительные сложности, связанные с использованием вспомогательных серверов Выбор основных направлений обучения Чтение кода, подготовленного другими разработчиками Решение актуальных задач Программирование как образ мышления Изучение языка SQL и других дополнительных программных средств Внесение незначительных изменений в готовые приложения РНР Важность отладки Нерекомендуемые программные средства Объекты и интерфейсы Стиль с максимальным использованием кода РНР Программирование крупных приложений с нуля Дополнительные рекомендации Чтение книг по программированию на языке C Стиль с минимальным использованием языка РНР Использование инструментальных средств, подходящих для выполнения конкретной работы Приложение Г. Информационные ресурсы РНР Web-узел РНР Списки рассылки РНР Присоединение к списку рассылки Списки рассылки для пользователей и разработчиков Обычные и резюмированные варианты Правила оформления вопросов для передачи в список рассылки Другие Web-узлы РНР Основная машина поддержки сценариев и инструментальные средства База знаний о системе РНР Статьи и учебники Образцы кода РНР Основные проекты РНР Web-узел авторов Предметный указатель