Библиотека сайта rus-linux.net
Колисниченко Д.Н.,
Самоучитель PHP4/5
"Наука и Техника", 2004
Содержание
Введение Часть I. Готовимся к работе с РНР Глава 1. Что нужно знать об устройстве Интернета прежде чем приступить к изучению PHP. Основные технологии 1.1. Архитектура сети: одноранговая и клиент/сервер 1.1.1. Одноранговые сети 1.1.2. Сети клиент/сервер 1.2. Принципиальная схема сети Интернет. Основные устройства Интернета 1.3. Что такое протокол. Протоколы Интернета 1.4. Как осуществляется сетевое взаимодействие 1.4.1. В каком виде информация передается по сети 1.4.2. Семиуровневая модель взаимодействия открытых систем OSI 1.4.3. Уровни сетевого взаимодействия Физический уровень (Physical Layer) Канальный уровень (Data link Layer) Сетевой уровень (Network Layer) Транспортный уровень (Transport Layer) Сеансовый уровень (Session Layer) Представительный уровень (Presentation Layer) Прикладной уровень (Application Layer) 1.4.4. Интернет и модель OSI 1.5. Адресация в сети Интернет 1.5.1. Вид IP-адреса и способы его назначения 1.5.2. Классы IP-сетей 1.5.3. Доменные имена, URL-адреса и их использование 1.6. Служба доменных имен DNS 1.7. World Wide Web и HTML-документы 1.8. Порты и сетевые демоны 1.9. Структура пакетов IP и TCP 1.10. Глоссарий Глава 2. Выбор хостинга. Регистрация доменного имени 2.1. Хостинг и хостинг-провайдеры 2.2. Обзор хостинг-провайдеров 2.2.1. Платный хостинг AvaHost.Ru -- http://www.avahost.ru AlexHost.Ru -- http://www.alexhost.ru Agava.Ru -- http://www.agava.ru, http://www.holm.ru 2.2.2. Бесплатный хостинг Бесплатный хостинг от Agava 2.3. Поиск оптимального хостинг-провайдера 2.4. На что следует обратить внимание 2.5. Регистрация доменного имени Глава 3. Интерфейс CGI 3.1. Принципы работы CGI 3.1.1. Общие положения 3.1.2. Как происходит взаимодействие сервера с браузером 3.1.3. Зачем нужен CGI-интерфейс и какие цели он выполняет 3.1.4. Немного подробнее о CGI 3.1.5. Способы создания CGI-сценариев 3.2. Методы передачи данных GET и POST 3.2.1. Зачем и в каком виде происходит передача данных серверу и CGI-сценариям 3.2.2. Метод GET Формирование запроса браузером Формирование ответа сервером 3.2.3. Метод POST 3.3. Переменные окружения CGI 3.4. Заголовки HTTP 3.4.1. Описание основных заголовков HTTP Заголовок Accept Заголовок Content-type Заголовок Content-length Заголовок Cookie Заголовок GET Заголовок Location Заголовок POST Заголовок Pragma Заголовок Server Заголовок Referer Заголовок User-Agent 3.4.2. Некоторые особенности 3.5. Коды ответов HTTP 3.6. Типы MIME 3.7. PHP и CGI Глава 4. Описание, установка и настройка необходимого программного обеспечения 4.1. Выбор необходимого программного обеспечения 4.1.1. Выбор операционной системы 4.1.2. Выбор программ 4.2. Web-сервер Apache 4.2.1. Какие функции выполняет Apache (и зачем он нам сейчас нужен на клиентской машине) 4.2.2. Конфигурационные файлы сервера Apache 4.2.3. Конфигурационный файл httpd.conf и его директивы Общие директивы Директивы протоколирования Директивы управления производительностью Директивы обеспечения постоянного соединения с клиентом Директивы создания виртуальных хостов Директивы настройки отображения каталогов Директивы обработки MIME-типов Директивы для работы с многоязычными документами Директивы перенаправления Директивы обработки ошибок 4.2.4. Директивы управления доступом к отдельным каталогам Блок директив Directory Блок директив Limit Блок директив Location 4.2.5. Каталоги пользователей 4.2.6. Виртуальные HTTP-серверы Виртуальные серверы с идентификацией по имени Виртуальные серверы с идентификацией по IP-адресу 4.2.7. Пример конфигурационного файла httpd.conf 4.3. Установка Apache+PHP+MySQL под Linux (Unix) 4.3.1. Установка Apache Установка пакетов Конфигурирование Apache с помощью netconf 4.3.2. Установка MySQL 4.3.3. Установка PHP и настройка связки Apache+PHP+MySQL 4.3.4. Тестирование созданной конфигурации 4.4. Установка Apache+PHP+MySQL под Windows 4.4.1. Установка и настройка Apache 4.4.2. Тестирование Apache под Windows 4.4.3. Установка PHP и настройка Apache для работы с PHP 4.4.4. Установка MySQL Часть II. Основные понятия, функции и механизмы РНР Глава 5. Основы языка PHP 5.1. Структура программ в РНР. Первая программа 5.1.1. Стандартный вид РНР-сценария Общие понятия и описание РНР Пишем первую программу (скрипт) на РНР 5.1.2. РНР-сценарии в теле HTМL-документов 5.1.3. Комментарии в РНР-сценариях 5.2. Переменные и типы данных Правила задания переменных Типы данных Функции определения и задания типа переменных Логические переменные и их особенности в РНР 5.3. Константы Задание констант. Функция define() Проверка существования констант. Функция defined() Стандартные константы 5.4. Операции с переменными Присвоение значений. Оператор присваивания Проверка существования переменной Удаление переменных 5.5. Выражения и операции 5.5.1. Понятие "выражение" в РНР 5.5.2. Операции в РНР Арифметические операции Битовые операции Логические выражения 5.5.3. Строки и строковые выражения Строки в апострофах и строки в кавычках Строковые операции Многострочные строковые переменные Строки в обратных кавычках (вызов внешней программы) 5.5.4. Оператор эквивалентности (===) 5.6. Ссылки Жесткие ссылки Символические ссылки 5.7. Основные конструкции языка 5.7.1. Условный оператор 5.7.2. Циклы Цикл с предусловием While Цикл с постусловием do while Цикл со счетчиком For Альтернативный синтаксис Вложенные циклы Операторы break и continue Цикл перебора массивов foreach 5.7.3. Инструкция switch-case (конструкция выбора) 5.8. Собираем один скрипт из нескольких отдельных скраиптов 5.8.1. Инструкции require 5.8.2. Инструкции include 5.8.3. Особенности использования include и require 5.8.4. Инструкции однократного включения include_once и require_once 5.9. Обработка ошибок Глава 6. Передача параметров сценариям 6.1. Формы в HTML-документах 6.1.1. Общие положения 6.1.2. Элементы форм 6.1.3. Тег FORM - контейнер форм 6.1.4. Тег Input и способы его использования Однострочные поля ввода Поле ввода пароля Скрытое текстовое поле Независимые переключатели Зависимые переключатели Кнопка отправки формы Кнопка сброса Кнопка отправки с индивидуальным рисунком 6.1.5. Ввод многострочного текста. Тег TEXTAREA 6.1.6. Списки выбора. Тег SELECT Списки с единственным выбором Списки множественного выбора 6.1.7. Загрузка файлов 6.2. Передача параметров с помощью формы 6.3. Механизм Cookies 6.3.1. Принцип работы механизма Cookies 6.3.2. Программирование Cookies Установка Cookies Чтение значений Cookies Глава 7. Массивы и списки 7.1. Массивы и списки Понятие массива Понятие списка 7.2. Ассоциативные массивы 7.3. Инструкции list() и array() 7.4. Инструкция array() и создание многомерных массивов 7.5. Операции над массивами 7.5.1. Удаление массивов 7.5.2. Слияние массивов Стандартное слияние Слияние с помощью функции array_merge() 7.5.3. Перебор массива Косвенный перебор Прямой перебор Недостатки косвенного перебора 7.6. Сортировка массивов Сортировка массива по значению. Функции asort() и arsort() Сортировка массивов по ключам. Функции ksort() и krsort() Сортировка списка Переворачивание массива. Функция array_reverse() Перемешивание списков. Функция shuffle() Пользовательская сортировка массивов. Функции uksort(), uasort() и usort() 7.7. Получение части массива 7.8. Добавление и удаление элементов массива Добавление в конец массива Удаление последнего элемента списка Добавление в начало списка. Удаление первого элемента списка Функция array_unique() 7.9. Переменные и массивы. Взаимные переходы Упаковка переменных в массив. Функция compaсt() Разупаковка (извлечение) переменных из массива. Функция extract() 7.10. Создания диапазона чисел 7.11. Небольшой практический пример Глава 8. Функции пользователя. Создание и использование собственных функций 8.1. Пользовательские функции в РНР Что такое "пользовательские функции" Особенности пользовательских функций в РНР 8.2. Создание пользовательских функций Синтаксис задания функций в РНР Первая функция 8.3. Передача параметров функции Передача значений Передача переменных по ссылке 8.4. Параметры по умолчанию 8.5. Переменное число параметров в функции 8.6. Локальные и глобальные переменные 8.7. Статические переменные 8.8. Рекурсия 8.9. Полезные примеры Инициализация переменных Параметры-массивы Возврат функцией ссылки 8.10. Условно определяемые функции Глава 9. Функции для работы со строками 9.1. Операции над строками Строки в РНР Конкатенация строк Сравнение строк 9.2. Базовые функции работы со строками 9.3. Замена в строке 9.4. Функции для работы с отдельными символами 9.5. Изменение регистра символов. Установка и настройка локали 9.6. Преобразование символов Функции удаления пробелов URL-кодирование и декодирование Использование слэшей Замена специальных символов на их HTML-эквиваленты 9.7. Преобразование кодировок 9.8. Специальные функции Хэш функции Функция Serialize() Глава 10. Полезные стандартные функции 10.1. Работа с датой и временем 10.2. Генератор случайных чисел. Вывод случайным образом баннеров 10.3. Математические функции 10.4. Преобразования систем счисления 10.5. Запуск внешних программ Глава 11. Работа с файлами и каталогами 11.1.Общие замечания 12.2.Основные операции с файлами 11.2.1. Открытие файла Функция fopen() и открытие файла Конструкция or die() 11.2.2. Временные файлы и их использование 11.2.3. Чтение и запись в бинарном режиме 11.2.4. Чтение и запись текстовых файлов (Построчные чтение и запись) 11.2.5. Закрытие файлов 11.2.6. Функция file(). Чтение файла в список 11.2.6. Чтение файлов в строку 11.2.7. Чтение CSV-файлов 11.3.Функции для работы с файлами 11.3.1. Функции манипулирования файлами 11.3.2. Функции для работы с именами файлов 11.3.3. Функции определения типа и параметров файла 11.3.4. Специальные функции 11.4. Права доступа 11.4.1. Права доступа в ОС Linux 11.4.2. Права доступа в Windows. 11.4.3. Функции определения прав доступа к файлу 11.5.Блокирование доступа Общие положения Виды блокировки Реализация блокировки в РНР 11.6. Запись данных в начало файла 11.6.Функции для работы с каталогами 11.6.1. Манипуляции с каталогами 11.6.2. Открытие, чтение и закрытие каталогов 11.7.Каналы 11.7.1. Общие положения 11.7.2. Управление каналами с помощью языка С 11.7.3. Управление каналами в РНР Часть III. Расширенные функции РНР Глава 12. Графические функции PHP 12.1. Основные понятия 12.1.1. Библиотека GD 12.1.2. Методика создания графического оформления сайтов в РНР 12.2. Вывод готовых изображений 12.3. Создание изображений в PHP 12.4. Графические форматы и библиотека GD Форматы и их указание 12.5. Определение размера картинки 12.6. Графические примитивы 12.6.1. Создание (определение) цвета Задание нового цвета в палитре рисунка Подбор ближайшего цвета из палитры Эффект прозрачности 12.6.2. Рисование графических примитивов в РНР Рисование точки Рисование линий Рисование прямоугольников Рисование многоугольников Рисование эллипсов и дуг Заполнение области 12.7. Вывод текста в изображении Вывод строки текста Задание собственного шрифта Вывод строки текста в вертикальном направлении 12.8. Работа с TTF-шрифтами 12.9. Копирование участков изображения Глава 13. Сервер баз данных MySQL 13.1. Общие положения База данных, таблицы записи Клиентская и серверные части MySQL Язык SQL 13.2. Основы SQL 13.2.1. Базовая терминология 13.2.2. Поля и их типы 13.2.3 Создание таблиц 13.2.4. Добавление данных в таблицу 13.2.5. Обновление записей 13.2.6. Удаление записей 13.2.7. Выбор записей 13.2.8. Дополнительные функции MIN, MAX, AVG, SUM 13.2.9. Группировка записей 13.2.10. Сортировка записей 13.2.11. Ключи 13.2.12. Отключение от базы данных 13.2.13. Внешние ключи 13.2.14. Удаление полей и таблиц 13.3. Функции PHP для работы с MySQL 13.3.1. Соединение PHP-сценариев с таблицами MySQL 13.3.2. Выбор базы данных 13.3.3. Обработка ошибок 13.3.4. Выполнение запросов к базе данных 13.3.5. Обработка результата запроса 13.3.6. Получение информации о результате Глава 14. Сетевые функции 14.1.Сокеты 14.1.1. Понятие сокета. Функции для работы с сокетами Открытие и использование сокетов Блокирующий/неблокирующий режимы. Функция soket_set_blocking() 14.1.2. Отправка электронных писем с помощью сокетов 14.2. Работа с DNS 14.2.1. DNS-функции 14.2.2. Корректное разрешение IP-адреса в доменное имя Часть IV. Создание своих проектов на РНР Глава 15. Отправление и прием писем. Делаем почтовую рассылку на сайте 15.1. Использование функции mail() для отправки сообщений 15.2. Если сообщения не отправляются 15.3. Отправление писем в формате HTML и вложений 15.3.1. Общие положения 15.3.2. Использование класса HtmlMimeMail 15.3.3. Сводный алгоритм отправки сообщений в различных MIME-форматах 15.3.4. Автоматическая отправка копий сообщений 15.4. Прием писем по протоколу POP3 15.4.1. Общие сведения о механизме приема писем и протоколе РОР3 15.4.2. Использование класса РОР3 15.4.3. Пишем сценарий получения сообщений Глава 16. Делаем чат для своего сайта 16.1. Как самому написать чат 16.2. Простой чат - SimpleChat 16.2.1. Установка, настройка и работа с чатом 16.2.2. Проблемы при установке Некорректная работа Я не могу очистить чат! 16.2.3. Полезные советы 16.3. Профессиональный чат CHAT.PHP.SPB.RU Установка и настройка чата под Windows Установка и настройка чата под Linux Глава 17. Голосование на сайте 17.1. Делаем голосование сами 17.2. Используем профессиональный скрипт Общее описание и установка Advanced Poll Настройка Advanced Poll. Центр управления Создание голосования Редактирование голосования Использование шаблонов Несколько голосований на одной web-странице Глава 18. Лента новостей 18.1. Принцип организации новостной ленты 18.2. Используем профессиональный скрипт (FusionPHP) 18.2.1. Устанавливаем скрипт 18.2.2. Работа со скриптом Глава 19. Гостевая книга и Форум 19.1. Создаем сами гостевую книгу 19.2. Используем готовый скрипт гостевой книги 19.2.1. Установка гостевой книги 19.2.2. Работа с гостевой книгой 19.3. Форум PHPBB 19.3.1. Установка форума PHPBB 19.3.2. Изменение внешнего вида форума 19.3.3. Администрирование форума Глава 20. Счетчик и анализ серверной статистики 20.1. Счетчик и протоколирование посещений на сайте 20.1.1. Простой счетчик Разрабатываем механизм работы счетчика Пишем сценарий счетчика "Отладка" счетчика 20.1.2. Создание графического счетчика 20.1.3. Протоколирование посещений Методика протоколирования Реализация протоколирования 20.1.4. Разработка системы статистики 20.2. Анализ серверной статистики (кто откуда приходил и что делал) Программа Webalizer 20.2.1. Методика сбора и анализа серверной статистики. Серверные журналы 20.2.2. Установка и запуск Webalizer 20.2.3 Конфигурационные параметры Webalizer Глава 21. Сессии в РНР 21.1. Обзор механизма сессий 21.1.1. Особенности CGI и недостатки Cookies 21.1.2. Механизм сессий: принцип работы 21.2. Инициализация сессии и регистрация в сессии переменных 21.3. Имя сессии 21.4. Еще одни способ (устаревший) обойти использование Cookies в сессиях 21.5. Обработчики сессии 21.6. Сохраниние в сессии ассоциативного массива Глава 22. Работа с WWW 22.1. Функция Header() 22.2. Запрет кэширования 22.3. SSI и PHP. Включение одних сценариев и html-страниц в другие 22.3.1. Общие положения 22.3.2. SSI и PHP . Функция virtual 22.4. Загрузка файла на сервер Multipart-формы и их описание Сценарий загрузки файлов на сервер. Обработка multipart-форм Организация виртуальной фотогалереи с возможностью самостоятельного размещения в ней фотографий пользователей Глава 23. Создание и использование шаблонов. Модули 23.1. Разделение проекта на дизайнерскую часть и программирование 23.2. Использование модулей. Создание библиотекаря 23.2.1. Общие положения 23.2.2. Создание библитекаря 23.2.3. Использование библиотекаря. Подключение модулей 23.3. Использвоание шаблонов Глава. 24. Система PHP-Nuke -- система управления содержимым сайта (контентом). Система PHP-Nuke 24.1. Возможности и особенности PHP-Nuke 24.2. Установка PHP-Nuke 24.3. Возможности администрирования. Настройка сайта 24.4. Управление контентом 24.5. Различные настройки Часть V. РНР для профессионалов Глава 25. Объектно-ориентированное программирование и PHP 25.1. Основные принципы и понятия объектно-ориентированного программирования Введение Инкапсуляция (encapsulation) Полиморфизм (polymorphism) Наследование (inheritance) 25.2. Создание класса в РНР 25.3. Доступ к методам и свойствам объекта 25.4. Инициализация объектов 25.5. Еще раз о наследовании и полиморфизме 25.6. Пример класса 25.7. ООП и PHP5 Глава 26. Тонкая настройка интерпретатора РНР 26.1. Директивы файла конфигурации php.ini Общий формат файла php.ini Настройка обработки ошибок. Директива error_reporting Максимальное время работы сценария. Директива max_execution_time "Вредная" директива magic_quotes_gpc 26.2. Индивидуальная настройка обработки ошибок для конкретного сценария 26.3. Синтаксическая проверка выполнение кода Проверка без запуска кода Проверка с запуском кода 26.4. Финализаторы. Функция Register_shutdown_function() 26.5. Информационные функции Функция phpinfo() Функция phpversion() Функция getlastmod() 26.6. "Засыпание" сценария Глава 27. Защищенные соединения 27.1. Настройка SSL-соединения 27.2. Генерирование сертификатов 27.3.Авторизация и переменные среды окружения Глава 28. Два проекта в одной главе 28.1. Пишем свой интернет-магазин 28.1.1. Вводная часть 28.1.2. Структура Интернет-магазина 28.1.3. Пишем вспомогательные скрипты 28.1.4. Пишем скрипт Интернет-магазина 28.1.5. Тестируем Интренет-магазин 28.2. Дистанционное обучение - система проверки знаний 28.2.1. Общие положения 28.2.2. Параметры системы проверки знаний 28.2.3. Организация. Выработка структуры 28.2.4. Пишем код системы проверки знаний Глава 29. Автоматиpованное управление параметрами хостинга. Система Monster Controls 29.1. Общие положения. Регистрация 29.2. Использование Monster Controls Основное меню. Статистика Раздел Email options Раздел Site Maintenance Раздел Webmaster tools 29.3. Делаем мемберскую зону Глава 30. Поддержка COM и Java 30.1. Технология COM 30.2. Поддержка Java Часть VI. Специальные технологии РНР5 Глава 31. Особенности и специальные возможности РНР5 31.1. Обзор нововведений Общая информация Новые директивы настроечного файла php.ini Новые механизмы поддержки потоков Новые функции графической библиотеки GD Разные новые функции 31.2. Zend Engine 2.0 31.2.1. Новая объектная модель и объектные дескрипторы 31.2.2. Механизм возврата функциями объектов 31.2.3. Разыменование объектов 31.2.4. Генная инженерия (клонирование объектов) 31.2.5. Оператор delete 31.2.6. Конструкторы и иерархия классов 31.2.7. Дополнительные возможности Глава 32. SQLite 32.1. Введение в SQLite 31.1.1. Установка 31.1.2. Встроенные константы SQLite 31.1.3. Список функция SQLite 31.2. Открытие и закрытие базы данных 31.3. Выполнение запросов 32.4.Функции для работы с результатом 32.5. Информационные функции 32.6. Другие функции Вместо заключения: Горячая десятка ошибок Ошибка 1 Ошибка 2 Ошибка 3 Ошибка 4 Ошибка 5 Ошибка 6 Ошибка 7 Ошибка 8 Ошибка 9 Ошибка 10