Предисловие Чего хочет программист от своей профессии Временные затраты О чем эта книга Общая структура книги ЧАСТЬ I. ОСНОВЫ WEB-ПРОГРАММИРОВАНИЯ Глава 1. Принципы работы Интернета Протоколы передачи данных Семейство TCP/IP Адресация с Сети IP-адрес Доменное имя Порт Терминология Сервер Узел Порт Сетевой демон Провайдер Хост Виртуальный хост Хостинг-провайдер (хостер) Хостинг Сайт HTML-документ Страница (или HTML-страница) Web-программирование World Wide Web и URL Протокол Имя хоста Порт Путь к странице Глава 2. Интерфейс CGI Что такое CGI? Секреты URL Заголовки и метод GET GET POST Content-type User-Agent Referer Content-length Cookie Accept Эмуляция браузера через telnet Метод POST Кодировки и форматы данных Что такое формы и для чего они нужны Передача параметров "вручную" Использование формы Абсолютный и относительный путь к сценарию Метод POST и формы Глава 3. CGI изнутри Передача документа пользователю Заголовки ответа Пример CGI-сценария Передача информации CGI-сценарию Переменные окружения Передача параметров методом GET Передача параметров методом POST Расшифровка URL-кодированных данных Формы Тэг <input> - различные поля ввода Тэг <textarea> - многострочное поле ввода текста Тэг <select> - список Загрузка файлов Формат данных Тэг загрузки файла (file) Что такое Cookies и с чем их едят Установка Cookie Получение Cookies из браузера Пример программы для работы с Cookies Авторизация ЧАСТЬ II. ВЫБОР И НАСТРОЙКА ИНСТРУМЕНТАРИЯ. WEB-СЕРВЕР APACHE Глава 4. Установка Apache Введение: зачем нужен домашний сервер? Дистрибутивы и ссылки От слов к делу: установка Apache Этап первый: установка Этап второй: настройка файла конфигурации Apache Этап третий: тестирование Apache Виртуальные хосты Apache Глава 5. Установка PHP и MySQL Установка PHP Настройка Apache для работы с PHP Тестирование PHP Установка дополнительных модулей Установка MySQL Тестирование MySQL ЧАСТЬ III. ОСНОВЫ ЯЗЫКА PHP Глава 6. Характеристика языка PHP Интерпретатор или компилятор? Достоинства и недостатки интерпретатора Пример PHP-программы Использование PHP в Web Глава 7. Переменные, константы, выражения Переменные Типы переменных Действия с переменными Определение типа переменной Установка типа переменной Оператор присваивания Ссылочные переменные Жесткие ссылки Символические ссылки Некоторые условные обозначения string int, long double, float bool array list object void mixed Константы Предопределенные константы Определение констант Проверка существования константы Выражения Логические выражения Строковые выражения Операции Арифметические операции Строковые операции Операции присваивания Операции инкремента и декремента Битовые операции Операции сравнения Операции эквивалентности Логические операции Оператор отключения предупреждений Глава 8. Работа с данными формы Передача данных командной строки Формы Трансляция полей формы в переменные Трансляция переменных окружения и Cookies Трансляция списков Трансляция массивов Глава 9. Конструкции языка Инструкция if-else Использование альтернативного синтаксиса Цикл с предусловием while Цикл с постусловием do-while Универсальный цикл for Инструкции break и continue Нетрадиционное использование do-while и break Цикл foreach Конструкция switch-case Инструкция require Инструкция include Трансляция и проблемы с include Инструкции однократного включения Глава 10. Ассоциативные массивы Создание массива "на лету". Автомассивы Инструкция list() Списки и ассоциативные массивы: путаница? Инструкция array() и многомерные массивы Операции над массивами Доступ по ключу Функция count() Слияние массивов Косвенный перебор элементов массива Прямой перебор массива Списки и строки Сериализация Глава 11. Функции и области видимости Пример функции Общий синтаксис определения функции Инструкция return Параметры по умолчанию Передача параметров по ссылке Переменное число параметров Локальные переменные Глобальные переменные Массив $GLOBALS Статические переменные Рекурсия Вложенные функции Условно определяемые функции Передача функций "по ссылке" Возврат функцией ссылки Пример функции: Dump() Несколько советов по использованию функций ЧАСТЬ IV. СТАНДАРТНЫЕ ФУНКЦИИ PHP Глава 12. Строковые функции Конкатенация строк О сравнении строк и инструкции if-else Функции для работы с одиночными символами Функции отрезания пробелов Базовые функции Работа с блоками текста Функции для преобразований символов Функции изменения регистра Установка локали (локальных настроек) Преобразование кодировок Функции форматных преобразований Работа с бинарными данными Хэш-функции Сброс буфера вывода Глава 13. Работа с массивами Сортировка массивов Сортировка массива по значениям (asort()/arsort()) Сортировка по ключам (ksort()/krsort()) Сортировка по ключам при помощи функции uksort() Сортировка по значениям при помощи функции uasort() Переворачивание массива array_reverce() Сортировка списка sort()/rsort() Сортировка списка при помощи функции usort() Перемешивание списка shuffle() Ключи и значения Комплексная замена в строке Слияние массивов Получение части массива Вставка/удаление элементов Переменные и массивы Создание списка - диапазона чисел Глава 14. Математические функции Встроенные константы Функции округления Случайные числа Перевод в различные системы счисления Минимум и максимум Степенные функции Тригонометрия Глава 15. Работа с файлами О текстовых и бинарных файлах Открытие файла Конструкция or die() Безымянные временные файлы Закрытие файла Чтение и запись Блочные чтение/запись Построчные чтение/запись Чтение CSV-файла Положение указателя текущей позиции Функции для определения типов файлов Определение типа файла Определение возможности доступа Определение параметров файла Специализированные функции Функции для работы с именами файлов Функции манипулирования целыми файлами Другие функции Блокирование файла Типы блокировок Блокировки с запретом "подвисания" Пример счетчика Глава 16. Работа с каталогами Манипулирование каталогами Работа с записями Пример: печать дерева каталогов Глава 17. Каналы и символические ссылки Каналы Символические ссылки Жесткие ссылки Глава 18. Запуск внешних программ Глава 19. Работа с датами и временем Представление времени в формате timestamp Работа с датами Григорианский календарь Глава 20. Посылка писем через PHP Функция отправки письма Проблема с кодировками Посылка в указанной кодировке Динамическая смена кодировки Проблема с заголовками Перспективы: создание "умной" функции для отправки писем Глава 21. Работа с WWW Установка заголовков ответа Вывод заголовка Запрет кэширования Получение заголовков запроса Работа с Cookies Немного теории Установка Cookie Получение Cookie SSI и функция virtual() Эмуляция функции virtual() Глава 22. Основы регулярных выражений в формате RegEx Начнем с примеров Пример первый Пример второй Выводы Терминология Использование регулярных выражений в PHP Сопоставление Сопоставление с заменой Язык RegEx Простые символы Квантификаторы повторений Мнимые символы Оператор альтернативы Группирующие скобки "Карманы" Дополнительные функции Примеры использования регулярных выражений Имя и расширение файла Имя каталога и файла Проверка на идентификатор Модификация тэгов Преобразование гиперссылок Преобразование адресов E-mail Выделение всех уникальных слов из текста Заключение Глава 23. Работа с изображениями Универсальная функция GetImageSize() Работа с изображениями и библиотека GD Пример Создание изображения Определение параметров изображения Сохранение изображения Работа с цветом в формате RGB Создание нового цвета Получение ближайшего цвета Эффект прозрачности Получение RGB-составляющих Графические примитивы Копирование изображений Прямоугольники Линии Дуга сектора Закраска произвольной области Многоугольники Работа с пикселами Работа с фиксированными шрифтами Загрузка шрифта Параметры шрифта Вывод строки Работа со шрифтами TrueType Вывод строки Определение границ строки Пример Глава 24. Управление интерпретатором Информационные функции Настройка параметров PHP error_reporting magic_quotes_gpc on/off max_execution_time track_vars on/off Контроль ошибок Оператор отключения ошибок Пример использования оператора @ Принудительное завершение программы Финализаторы Генерация кода во время выполнения Выполнение кода Генерация функций Проверка синтаксической корректности кода Другие функции Глава 25. Управление сессиями Зачем нужны сессии? Механизм работы сессий Инициализация сессии Регистрация переменных Идентификатор сессии и имя группы Имя группы сессий Идентификатор сессии Другие функции Установка обработчиков сессии Обзор обработчиков Регистрация обработчиков Пример: переопределение обработчиков Сессии и Cookies Явное использование константы SID Неявное изменение гиперссылок Неявное изменение формы Так использовать Cookies в сессиях или нет? Глава 26. Работа с базой данных MySQL Неудобство работы с файлами Устройство MySQL Соединение с базой данных Обработка ошибок Выполнение запросов к базе данных Язык запросов MySQL Создание таблицы Удаление таблицы Вставка записи Удаление записей Поиск записей Обновление записей Получение числа записей, удовлетворяющих выражению Получение уникальных значений столбцов Получение результата Параметры результата Получение поля результата Получение целой строки результата Получение информации о результате Пример использования функций поддержки MySQL Уникальные идентификаторы в MySQL Работа с таблицами Глава 27. Сетевые функции Работа с сокетами Функции для работы с DNS Разрешение IP-адреса в доменное имя и наоборот Корректный перевод IP-адреса в доменное имя ЧАСТЬ V. ПРИЕМЫ ПРОГРАММИРОВАНИЯ НА PHP Глава 28. Загрузка файлов на сервер Multipart-формы Тэг выбора файла Закачка файлов и безопасность Поддержка закачки в PHP Простые имена полей закачки Пример: фотоальбом Сложные имена полей Проблемы со сложными именами Глава 29. Модульность программы. Написание "библиотекаря" Наши требования Библиотекарь Работа с библиотекарем Автоматическое подключение библиотекаря Способ первый: использование auto_prepend_file Способ второй: установка обработчика Apache Обработчики Apache Перехват обращений к несуществующим страницам Связывание PHP с другим расширением Решение проблемы зацикливания обработчика Глава 30. Код и шаблон страницы Идеология Двухуровневая схема Шаблон страницы Генератор данных Взаимодействие генератора данных и шаблона Недостатки Трехуровневая схема Шаблон страницы Диаграммы двухуровневой и трехуровневой моделей Интерфейс Ядро Проверка корректности входных данных Шаблонизатор Традиционное построение страниц Что такое шаблонизатор? Описание шаблонизатора Обработчик Apache для шаблонизатора Главный модуль шаблонизатора "Перехват" выходного потока Стек буферов Проблемы с отладкой Глава 31. Объектно-ориентированное программирование на PHP Классы и объекты Свойства объекта Методы Класс таблицы MySQL Доступ объекта к своим свойствам Инициализация объекта. Конструкторы Деструктор Наследование Полиморфизм Полноценный класс таблицы MySQL Копирование объектов Ссылки и интерфейсы Возврат ссылки на объект Возврат интерфейса Глава 32. Почтовые шаблоны Мини-шаблонизатор Отправка и перекодирование писем Пример Глава 33. Разные советы Разделенные вычисления Использование самопереадресации Запрет кэширования страниц Несколько слов о флажках checkbox ЧАСТЬ VI. ПРИЛОЖЕНИЯ Приложение 1. Файл конфигурации Apache httpd.conf Приложение 2. Файл конфигурации PHP php.ini Предметный указатель