САМОУЧИТЕЛЬ PHP 4

САМОУЧИТЕЛЬ PHP 4

Предисловие
Чего хочет программист от своей профессии
Временные затраты
О чем эта книга
Общая структура книги
Протоколы передачи данных

Семейство TCP/IP
Адресация с Сети
IP-адрес
Доменное имя


Порт

Терминология
Сервер
Узел
Сетевой демон
Провайдер
Хост
Виртуальный хост
Хостинг-провайдер (хостер)
Хостинг

Сайт
Страница (или HTML-страница)
Web-программирование
World Wide Web и URL
Протокол
Имя хоста
Путь к странице
Конструкции языка
Интерфейс CGI
Что такое CGI?
Секреты URL
Заголовки и метод GET
GET
POST
Content-type

User-Agent
Referer
Content-length
Cookie
Accept
Эмуляция браузера через telnet
Метод POST
Кодировки и форматы данных
Что такое формы и для чего они нужны

Передача параметров "вручную"
Использование формы
Абсолютный и относительный путь к сценарию
Метод POST и формы
CGI изнутри
Заголовки ответа
Заголовок кода ответа
Pragma

Location
Set-cookie
Date
Пример CGI-сценария
Переменные окружения
HTTP_ACCEPT
HTTP_REFERER

HTTP_USER_AGENT
HTTP_HOST
SERVER_PORT
REMOTE_ADDR
REMOTE_PORT
SCRIPT_NAME
REQUEST_METHOD
QUERY_STRING
Передача параметров методом GET

Передача параметров методом POST
Расшифровка URL-кодированных данных

Текстовое поле (text)
Поле ввода пароля (password)
Скрытое текстовое поле (hidden)
Независимый переключатель (checkbox)
Зависимый переключатель (radio)
Кнопка отправки формы (submit)
Кнопка сброса формы (reset)
для отправки формы (image)
Тэг textarea— многострочное поле ввода текста

Тэг select— список
Списки множественного выбора (multiple)
Формат данных
Тэг загрузки файла (file)
Установка Cookie
Name
Value
Expires
Domain

Path
Secure
Получение Cookies из браузера
Пример программы для работы с Cookies
Этап первый: установка
Этап второй: настройка файла конфигурации Apache

Этап третий: тестирование Apache
Проверка html
Проверка SSI
Проверка CGI
Установка PHP и MySQL
Характеристика языка PHP
Переменные, константы, выражения
Типы переменных
Integer

Double
String
Array
Object
Логические переменные
Действия с переменными
Присвоение значения
Проверка существования
Уничтожение

Определение типа переменной

САМОУЧИТЕЛЬ PHP 4

Установка типа переменной
Жесткие ссылки

Символические ссылки
Int, long
Double, float
Bool
List
Void
Mixed

Предопределенные константы
Определение констант
Проверка существования константы
Логические выражения
Строковые выражения
Строка в апострофах
Строка в кавычках
Here-документ
Вызов внешней программы
Арифметические операции

Строковые операции
Операции присваивания
Операции инкремента и декремента
Битовые операции
Операции сравнения
Операции эквивалентности
Логические операции
Работа с данными формы
Разные советы
Разделенные вычисления

Использование самопереадресации
Запрет кэширования страниц
Несколько слов о флажках checkbox
Ассоциативные массивы

Создание массива "на лету". Автомассивы
Инструкция list()
Списки и ассоциативные массивы: путаница?..
Инструкция array() и многомерные массивы
Операции над массивами
Доступ по ключу
Функция count()
Слияние массивов

Косвенный перебор элементов массива
Недостатки косвенного перебора
Одинаковые ключи
Нулевой ключ
Прямой перебор массива
Классический перебор
Перебор в стиле PHP 4
Списки и строки

Сериализация
Функции и области видимости
Пример функции
Общий синтаксис определения функции
Инструкция return
Параметры по умолчанию
Передача параметров по ссылке

Переменное число параметров
Локальные переменные
Глобальные переменные
Массив $GLOBALS
Вложенные функции
Словно определяемые функции
Передача функций "по ссылке"

Возврат функцией ссылки
Пример функции: Dump()
Строковые функции
Конкатенация строк
О сравнении строк и инструкции if-else
Функции для работы с одиночными символами
Базовые функции
Работа с блоками текста

Функции для преобразований символов
Функции изменения регистра
Преобразование кодировок
Хэш-функции
Сброс буфера вывода[E58]
Работа с массивами
Сортировка массива по значениям (asort()/arsort())

Сортировка по ключам (ksort()/krsort())
Сортировка по ключам при помощи функции uksort()
Сортировка по значениям при помощи функции uasort()
Переворачивание массива array_reverce()
Сортировка списка sort()/rsort()
Сортировка списка при помощи функции usort()
Перемешивание списка shuffle()
Ключи и значения
Комплексная замена в строке

Получение части массива
Вставка/удаление элементов
Переменные и массивы
Создание списка – диапазона чисел
Математические функции
Встроенные константы
Функции округления

Степенные функции
Тригонометрия
Работа с файлами
О текстовых и бинарных файлах
Открытие файла
Конструкция or die()

Безымянные временные файлы
Закрытие файла
Чтение и запись
Блочные чтение/запись
Построчные чтение/запись
Чтение CSV-файла
Положение указателя текущей позиции
Определение типа файла
Определение возможности доступа
Специализированные функции

Функции манипулирования целыми файлами
Другие функции
Блокирование файла
Типы блокировок
Исключительная блокировка
Разделяемая блокировка
Блокировки с запретом "подвисания"

Пример счетчика
Работа с каталогами
Манипулирование каталогами
Работа с записями
Пример: печать дерева каталогов
Каналы и символические ссылки

САМОУЧИТЕЛЬ PHP 4

Запуск внешних программ

Работа с датами и временем
Представление времени в формате timestamp
Работа с датами
Григорианский[E79] календарь
Посылка писем через PHP
Функция отправки письма
Проблема с кодировками
Посылка в указанной кодировке
Динамическая смена кодировки

Проблема с заголовками
Перспективы: создание "умной" функции для отправки писем
Работа с WWW
Вывод заголовка
Запрет кэширования
Немного теории
Получение Cookie
SSI и функция virtual()

Эмуляция функции virtual()
Основы регулярных выражений в формате RegEx
Начнем с примеров
Пример первый
Пример второй
Выводы
Использование регулярных выражений в PHP
Сопоставление
Сопоставление с заменой

Простые символы
Отмена действия спецсимволов
Группы символов
Отрицательные группы
Квантификаторы повторений
Ноль или более совпадений
Одно или более совпадений
Ноль или одно совпадение
Заданное число совпадений

Мнимые символы
Оператор альтернативы
Группирующие скобки
"Карманы"
Использование карманов в функции замены
Использование карманов в функции сопоставления
Дополнительные функции
Примеры использования регулярных выражений
Имя и расширение файла

Имя каталога и файла
Проверка на идентификатор
Модификация тэгов
Преобразование гиперссылок
Преобразование адресов E-mail
Выделение всех уникальных слов из текста
Работа с изображениями
Работа с изображениями и библиотека GD
Пример
Определение параметров изображения

Сохранение изображения
Работа с цветом в формате RGB
Создание нового цвета
Получение ближайшего цвета
Эффект прозрачности
Получение RGB-составляющих
Графические примитивы
Копирование изображений
Прямоугольники
Линии

Дуга сектора
Закраска произвольной области
Многоугольники
Работа с пикселами
Перейти на страницу
Загрузка шрифта
Параметры шрифта
Вывод строки
Определение границ строки

Пример
Управление интерпретатором
Информационные функции
Настройка параметров PHP
Error_reporting
Magic_quotes_gpc on|off
Max_execution_time
Track_vars on|off
Контроль ошибок

Оператор отключения ошибок
Пример использования оператора @
Принудительное завершение программы
Финализаторы
Генерация кода во время выполнения
Выполнение кода
Генерация функций

Проверка синтаксической корректности кода
Управление сессиями
Механизм работы сессий
Регистрация переменных
Идентификатор сессии и имя группы
Имя группы сессий
Идентификатор сессии
Установка обработчиков сессии

Обзор обработчиков
Регистрация обработчиков
Пример: переопределение обработчиков
Сессии и Cookies
Явное использование константы SID
Неявное изменение гиперссылок

Неявное изменение формы
Так использовать Cookies или нет?
Работа с базой данных MySQL
Соединение с базой данных
Обработка ошибок
Выполнение запросов к базе данных
Создание таблицы
Типы полей
Целые числа
Дробные числа

Строки
Бинарные данные
Дата и время
Перечисления и множества
Модификаторы и флаги типов
Удаление таблицы
Вставка записи
Удаление записей
Поиск записей
Обновление записей

Получение числа записей, удовлетворяющих выражению
Получение уникальных значений столбцов
Параметры результата
Получение поля результата
Получение целой строки результата
Получение информации о результате
Пример использования функций поддержки MySQL

Сетевые функции
Функции для работы с DNS
Разрешение[DK148] IP-адреса в доменное имя и наоборот
Корректный перевод IP-адреса в доменное имя

САМОУЧИТЕЛЬ PHP 4

Загрузка файлов на сервер
Multipart-формы
Тэг выбора файла
Закачка файлов и безопасность
Поддержка закачки в PHP

Простые имена полей закачки
Пример: фотоальбом
Сложные имена полей
Проблемы со сложными именами
Модульность программы. Написание "библиотекаря"
Наши требования
Библиотекарь

Работа с библиотекарем
Автоматическое подключение библиотекаря
Способ первый: использование auto_prepend_file
Способ второй: установка обработчика Apache
Обработчики Apache

Перехват обращений к несуществующим страницам
Связывание PHP с другим расширением
Решение проблемы зацикливания обработчика
Код и шаблон страницы
Идеология
Двухуровневая схема
Шаблон страницы
Генератор данных

Взаимодействие генератора данных и шаблона
Недостатки
Трехуровневая схема
Диаграммы двухуровневой и трехуровневой моделей
Интерфейс
Ядро
Проверка корректности входных данных

Шаблонизатор
Традиционное построение страниц
Сложность перестановки блоков
"Расщепление" шаблона
Сложность смены шаблона у части страниц
Что такое шаблонизатор?
Описание шаблонизатора
Вставка страниц в единый шаблон
Множественность блоков

Наследование блоков
Автоматическая генерация названий
Поддержка механизма поиска включаемых файлов
Фильтры блоков
Поддержка трехуровневой схемы разработки сценариев
Обработчик Apache для шаблонизатора
Главный модуль шаблонизатора

Стек буферов
Проблемы с отладкой
Объектно-ориентированное программирование на PHP
Классы и объекты
Свойства объекта
Методы
Класс таблицы MySQL

Доступ объекта к своим свойствам
Инициализация объекта. Конструкторы
Деструктор
Наследование
Полиморфизм
Полноценный класс таблицы MySQL

Копирование объектов
Ссылки и интерфейсы
Возврат ссылки на объект
Возврат интерфейса
Почтовые шаблоны
Мини-шаблонизатор

Отправка и перекодирование писем
Файл конфигурации PHP php.ini
Файл конфигурации Apache httpd.conf