Введение
Пара слов от автора
На кого рассчитана данная книга
О структуре книги
О выборе провайдера


Урок 1. Первое знакомство.
Краткое лирическое отступление насчет CGI
Немного схем для наглядности
Ваш первый скрипт
Если что-то не получилось сразу
Проблемы тех, кто работает с Windows
Права доступа — основа основ!
Еще раз о том, как это работает


Урок 2. Прекрасный язык Perl
Типы данных
Переменные
Скалярные переменные
Списки (массивы)
Хэши (ассоциативные массивы)
Операторы
Регулярные выражения
Опции регулярных выражений
Полезные функции.
Файловые переменные
Пример использования Perl


Урок 3. Параметры, запросы и ответы
Переменные среды CGI
Переменные заголовка HTTP-запроса
Заголовки запросов и ответов
Этапы соединения
Методы HTTP
Поля заголовка запроса
Примеры запросов
Ответ НТТР-сервера
Коды возврата HTTP
CGI-заголовок
Nph-скрипты
Генерация ответа
Content-Type
Content-Transfer-Encoding
MIME-Version
О разных броузерах и разных глюках


Урок 4. Обработка форм
Формы и с чем их едят
Teг FORM
Элементы форм
Кнопка (button)
Кнопка Submit
Кнопка Reset
Поле ввода (text)
Текстовая область (textarea)
Поле ввода пароля (password)
Скрытое поле (hidden)
Флажок (checkbox)
Радиокнопка (radio)
Список (select)
Небольшая помощь от JavoScript
Обработка донных форм
Несколько советов по эффективной обработке форм
Загрузка документов


Урок 5. Графика, анимация и баннеры
Изображения ismop
Анимация с использованием server push и Refresh
Баннеры


Урок 6. Несколько советов по отладке
Особенности отладки CGI-скриптов
Ваш инструментарий


Урок 7. Примеры простых приложений
Кто посещает мою страницу?
Гостевая книга
Счетчик посещений
Опрос посетителей сайта


Урок 8. Системные тонкости.
Многопользовательская работа с файлами
Сокеты и сеть
HTTP-клиент
Функция httpget
Другие применения CGI-скриптов


Урок 9. Общение — E-mаil и чат
Основные приемы работы с электронной почтой
Отправка сообщений no SMTP
Получение почты по РОРЗ
Чат
Обновление


Урок 10. Виртуальные пути и их применение
Виртуальные пути
Работа с большой базой документов
Проблема смены кодировки.


Урок 11. Поисковые системы
Поиск ключевых слов в базе данных
Создание поисковой базы донных
Проверка корректности URL
Структура базы данных поиска


Урок 12. Конфигурирование сервера
Управление доступом
Ограничение доступа
Аутентификация
Настройки сервера httpd
CGI и SSI
Проверка условий и условные подстановки в SSI


Урок 13. Применение других языков программирования
Написание CGI-скриптов на Shelf
Комментарии.
Переменные
Перенаправление ввода/вывода
Циклы
Команда выбора
Написание CGI-скриптов на С


Урок 14. CGI-скрипты и безопасность
Основные источники дыр в безопасности
Pipe как дыра в безопасности
Функция evol() как дыра в безопасности
Управляющие скрипты
Пороли и их безопасное применение
Ошибки в алгоритмах программы
SUID-скрипты и CGI
Пример применения SUID-CGI-скрипта
Удаленный срыв стека — отлаженная технология
Методы обнаружения дыр
Вместо заключения


Урок 15. Интерфейс к базам данных
Цели и средства
Обзор СУБД
Модули
Переносимость СУБД


Урок 16. Статистика посещений сервера
Структура протоколов сервера
Статистика хостов и документов
Анализ трафика и скорости работы сайта
Статистика ошибок


Урок 17. Оптимизация работы сайта
Оптимизация графики
Ускорение загрузки HTML-файлов
Психологические трюки


Урок 18. Модуль CGI.pm
Создание объекта запроса
Некоторые полезные функции
Генераций заголовков
Генерация форм
Cookies
FRAMESET и CCS
Фреймы
CSS
Средства отладки скриптов в модуле CGI.pm
Средства работы с переменными окружения
Генерация HTML-тегов
Поддержка nph-скриптов
Краткое обобщение сведений о модуле CGI.pm


Урок 19. Более сложные приложения
FTP-клиент
Просмотр dbf-файлов
Еще один маленький чат
Пример suid-скрипта


Заключение


Алфавитный указатель