- •Рецензенты:
- •Введение 7 Глава 1. Создание Web‑страниц, html, vbSript 9
- •Глава 2. Weв-программирование на языке php 96
- •Глава 3. Практикум по разработке сайтов и Web-программированию 155
- •Глава 1. Создание Web‑страниц, html, vbSript
- •1.1. Обзор средств и технологий создания Web‑страниц и Web-приложений
- •1.1.1. Языки описания документов
- •1.1.1.2. Динамический html.
- •1.1.1.3. Язык гипертекстовой разметки xml.
- •1.1.1.5. Язык vrml
- •1.1.1.6. Мультимедйные средства и редакторы
- •1.1.2. Языки и технологии Web-программирования
- •1.1.2.1. Клиентские приложения
- •1.1.2.2. Серверные приложения
- •1.1.2.3. Поддержка состояния
- •1.1.3. Системы управления контентами сайта (cms)
- •1.1.5. Использование поисковых возможностей Интернет
- •1.2. Основы html
- •1.2.1. Правила написания
- •1.2.2. Структура документа
- •1.2.3. Форматирование текста
- •1.2.4. Атрибуты выравнивания текста и управления цветом
- •1.2.5. Шрифты
- •1.2.6. Списки
- •1.2.7. Изображения
- •1.2.8. Таблицы
- •1.2.9. Якорь (элемент привязки документов, их частей, почты)
- •1.2.10. Фреймы
- •1.2.11. Формы, управляющие элементы
- •1.2.12. Использование компонентов ActiveX
- •1.2.13. Дополнительные теги
- •1.2.14. Листы стилей
- •1.3. Клиент и сервер
- •1.4. Создание asp‑файла
- •1.5. Основы создания сценариев
- •1.6. Управление браузером
- •1.6.1. Объект Window
- •1.6.2. Объект Frame
- •1.6.3. Объект Location
- •1.6.4. Объект Navigator
- •1.6.5. Объект History
- •1.6.6. Объект Document
- •1.6.7. Объект Links
- •1.6.8. Объект Anchors
- •1.6.9. Объект Forms
- •1.6.10. Объект Elemеnts
- •1.6.10.1. Кнопки (Button, Reset, Submit)
- •1.6.10.2. Переключатели (CheckBox, Radio)
- •1.6.10.3. Поля ввода (Text, TextArea, Password)
- •1.6.10.4. Списки выбора (Select)
- •1.7. Объекты asp
- •1.8. Работа с текстовыми файлами
- •1.9. Работа с базами данных
- •1.10. Визуальный редактор html‑документов Dreamweaver
- •1.10.1. Палитра основных объектов
- •1.10.2. Настройка Dreamweaver
- •1.10.3. Структура и размещение файлов
- •1.10.4. Создание заготовки html‑документа
- •1.10.5. Создание пустой таблицы
- •1.10.6. Форматирование ячеек таблицы
- •1.10.7. Размещение картинки
- •1.10.8. Создание меню
- •1 .10.9. Форматирование текста
- •1.10.10. Режимы работы объектов
- •1.10.11. Команды
- •1.10.12. Анимация
- •Вопросы для самопроверки и контроля
- •Глава 2. Weв-программирование на языке php
- •2.1. Основные положения
- •2.1.1. Среды разработки
- •2.1.2. Настройка php
- •2.1.3. Правила написания программы
- •2.2. Типы данных и переменные
- •2.2.1. Типы данных
- •2.2.2. Переменные
- •2.3. Выражения, операции и операторы
- •2.3.1. Выражения и операции
- •2.3.2. Операторы
- •2.4. Функции
- •2.5. Массивы
- •2.6. Объектно-ориентированное программирование
- •2.6.1. Объявление класса
- •2.6.2. Основные стандартные функции
- •2.7. Файлы
- •2.7.1. Открытие и закрытие файлов
- •2.7.2. Запись в файл
- •2.7.3. Чтение из файла
- •2.7.4. Запуск внешних программ на сервере
- •2.7.5. Работа с файловой системой
- •2.7.6. Работа с каталогами
- •2.8. Регулярные выражения и строки
- •2.8.1. Регулярные выражения
- •2.8.2. Стандартные интервальные выражения (символьные классы)
- •2.8.3. Функции поиска в стиле posix
- •2.8.4. Строковые функции
- •2.8.5. Преобразование текста в html
- •2.9. Динамическое создание страниц
- •2.9.1. Простые ссылки
- •2.9.2. Файловые компоненты (шаблоны)
- •2.10. Формы
- •2.10.1. Элементы для ввода информации.
- •2.10.2. Элементы форм, ориентированные на ввод с помощью мышки
- •2.10.3. Проблема выравнивания полей для различных браузеров и экранов дисплеев
- •2.11. Базы данных
- •2.11.1. Стандартные функции рнр для работы с MySql
- •2.11.2. Работа с сервером баз данных с различными субд через odbc
- •2.11.3. Другие субд
- •2.12. Шаблоны
- •2.12.1. Основные понятия
- •2.12.2. Схема построения шаблона
- •1) Регистрация файлов
- •2) Регистрация переменных
- •3) Обработка файла
- •4) Вывод файла
- •2.14. Безопасность
- •2.14.1. Проблемы конфигурации
- •2.14.2. Маскировка файлов данных и конфигурационных файлов
- •2.14.3. Хранение файлов за пределами корневого каталога документов
- •2.14.4. Безопасность данных
- •2.14.5. Шифрование данных
- •2.14.6. Аутентификация пользователя
- •2.15. Рекомендации
- •2.15.1. Программирование на php
- •2.15.2. Использование MySql
- •Вопросы для самопроверки и контроля
- •Глава 3. Практикум по разработке сайтов и Web-программированию
- •3.1. Разработка учебного сайта заказов на авиабилеты Приведем пример разработанного учебного сайта (рисунок 3.1.1).
- •3.2. Разработка Web-приложений на php для ведения таблиц в базе данных с субд MySql
- •3.2.1. Таблица единиц измерения
- •3.2.2. Таблица успеваемости студентов
- •3.3. Разработка Web-приложения на php для ведения таблицы единиц измерения в базе данных с субд Access
- •3.4. Разработка Web-приложения на php для поиска и вывода оценок студента из базы данных успеваемости с субд Access
- •3.5. Разработка Web-приложения на php по трудоустройству
- •3.5.1. Постановка задачи
- •3.5.2. База данных
- •3.5.3. Программа формирования и ведения резюме (Vipuskniki.Php).
- •3.5.4. Функция проверки правильности даты (proverkadati.Php)
- •3.5.5. Функция проверки номера года (proverkagoda)
- •3.5.6. Функция проверки натурального числа (proverkahisla)
- •3.5.7. Подпрограмма чтения поля с фотографией (VivodFoto.Php)
- •3.5.8. Программа ввода параметров поиска записей-резюме
- •3.5.9. Программа поиска записей-резюме (ObrabRabotodateli.Php)
- •3.5.10. Программа переноса сообщений работодателей кандидатам (ObrabRabotodateli2.Php)
- •3.6. Задачи для программирования
- •3.6.1. Формирование форм
- •3.6.2. Работа с базой данных
- •3.6.3. Дополнительные задачи
- •3.6.3.1. Циклы
- •3.6.3.2. Массивы
- •3.6.3.3. Функции
- •3.6.3.4. Формы
- •3.6.3.5.Файлы
- •3.6.3.6. Строки
- •3.6.3.7. Графика
- •3.6.3.8. Субд MySql
- •3.7. Контрольные работы
- •3.7.1. Разработка учебного сайта
- •3.7.2. Разработка учебного Web-приложения по ведению базы данных
- •Глава 4. JavaScript Введение
- •События JavaScript
- •Показать и скрыть элемент с текстом
- •Динамическая подгрузка html контента на JavaScript
- •Функция Confirm в JavaScript
- •Таймер на JavaScript
- •Анимация JavaScript
- •Калькулятор стоимости на JavaScript
- •Подсчет количества символов на JavaScript
- •4.1. Основы языка
- •Приложение 1. Ответы на вопросы для самопроверки
- •Приложение 2. Вопросы к экзамену или зачету.
- •Предметный указатель
- •Библиографический список
- •Плещёв Владимир Васильевич Разработка сайтов и Web-программирование:
- •С примерами и упражнениями
4) Вывод файла
Вероятно, после обработки файла вы захотите отправить его в браузер, чтобы пользователь увидел результат обработки шаблона. В нашем примере для вывода файла создается отдельный метод, приведенный ниже.
function print_file($file_id) {
$file_id print $this->files[$file id]; // Вывести содержимое файла с идентификатором
}
При вызове print_file( ) содержимое файла, представленного ключом $file_id, передается в браузер.
Пример использования класса template.
// Включить класс шаблона, include("tempiate.class") и присвоить значения переменным
$page_title = "Приветствуем Вас на нашей домашней страничке!";
$bg_color = "white"; $user_name = "Chef Jacques":
// Создать новый экземпляр класса $template= new template;
// Зарегистрировать файл "homepage.HTML" с псевдонимом "home"
$template->register_file("home", "homepage.HTML");
// Зарегистрировать переменные
$template->register_variables("home", "page_title, bg_color.user_name");
$template->file_parser("home");
$template->print_file("home"); // Передать результат в браузер
Полный код класса template:
class template {
VAR $files = array( );
VAR $variables = array( );
VAR $opening_escape = '{';
VAR $closing_escape = '}' ;
function register_file($file_id, $file_name) {
// Открыть $file_name для чтения или завершить программу с сообщением об ошибке
$fh = fopen($file_name, "r") or exit("Невозможно открыть файл $file_name!");
$file_contents = fread($fh, filesize($file_name)); // Прочитать файл $file_name в переменную
// Присвоить содержимое элементу массивас ключом $file_id.
$this->files[$file_id] = $file_contents;
fclose($fh); // Работа с файлом завершена, закрыть его.
} // Функция: register_variables( ) Назначение: сохранение переменных, переданных
// в параметре $variable_name. в массиве с ключом $file_id.
function register_vanables($file_id, $variable_name) {
// Попытаться создать массив, содержащий переданные имена переменных
$input_variables = explode(".", $variable_name);
while (Iist($value) = each($input_variables)) // Перебрать имена переменных
$this->variables $this->variables[$file_id][] = $value // Присвоить значение элементу массива
}
function file_parser($file_id) {
// Сколько переменных зарегистрировано для данного файла?
$varcount = count($this->variables[$file_id]);
$keys = array_keys($this->files) // Сколько файлов зарегистрировано?
// Если файл $file_id существует в массиве $this->files
// и с ним связаны зарегистрированные переменные
If ( (in_array($file_id. $keys)) && ($varcount > 0))
{ // Сбросить $x $x = 0 Пока остаются переменные для обработки...
while ($x < sizeof($this->variables[$file_id]))
{ // Получить имя очередной переменной $string = $this->variables[$file_id][$x];
// Получить значение переменной. Обратите внимание:
// для получения значения используется конструкция $$.
// Полученное значение подставляется в файл вместо
// указанного имени переменной.GLOBAL $$string:
// Построить точный текст замены вместе с ограничителями
$needle = $this->opening_escape.$string.$this->closing_escape;
// Выполнить замену.
$this->files[$file_id] = str_replace( $needle.$$string.$this->files[$file_id]); $x++;
}
}
}
function print_file($file_id) {
$file_id print $this->files[$file id]; // Вывести содержимое файла с идентификатором
}
}
}
Описанная схема построения шаблонов используется в нескольких библиотеках РНР, среди которых наибольший интерес представляют следующие:
Richard Hayes's Template Class: http://www.heyes-computing.net;
Fast Template: http://www.thewebmasters.net/php.
На сайте ресурсов РНР, PHPBuilder (http://www.phpbuilder.com), также имеется несколько интересных учебников, посвященных обработке шаблонов.
На сайте РНР Classes Repository (http://phpclasses.UpperDesign.com), можно найти несколько реализаций.
2.13. COM – объекты
Технология СОМ (сокращение от «Component Object Model», то есть «модель составного объекта») обеспечивает взаимодействие между приложениями, работающими на разных языках и платформах. Такое взаимодействие в значительной мере способствует идее построения многократно используемых, легко сопровождаемых и адаптируемых программных компонентов (в последнее время к этим трем принципам проявляется повышенное внимание в области компьютерных технологий). Хотя СОМ обычно рассматривается как спецификация, ориентированная в первую очередь на продукты Microsoft, поддержка СОМ уже реализована во многих языках (например, в РНР, Java, C++ и Delphi) и существует на многих платформах, включая Windows, Linux и Macintosh.
РНР содержит несколько стандартных функций для работы с СОМ. Учтите, эти функции поддерживаются только в версии РНР для Windows!
object new СОМ("обьект.класс" [, string удаленный_адрес]) – создание экземпляра объекта СОМ. Параметр объект.класс определяет модуль СОМ, присутствующий на сервере. Необязательный параметр удаленный_адрес используется в том случае, если объект СОМ создается на удаленном компьютере. Допустим, вы хотите создать экземпляр объекта для приложения MS Word. При этом приложение Microsoft Word запускается так, словно вы запустили его вручную. Команда имеет следующий синтаксис:
$word=new COM("word.application") or exit("Couldn't start Word!");
После того как экземпляр объекта СОМ будет создан, можно приступать к работе с различными методами и свойствами этого объекта. Допустим, вы захотели активизировать окно Word. Следующая команда изменяет атрибут видимости объекта, в результате чего графический интерфейс приложения отображается на экране: $word->visible = 1;
объект->имя_метода([значение, ...]) - вызов метода объекта СОМ. Объект соответствует экземпляру объекта СОМ, созданному описанным выше способом. Параметр имя_метода определяет имя метода, определенного в классе объект. Необязательный параметр значение позволяет передавать параметры при вызове методов, допускающих (или требующих) дополнительных данных. Как и при вызове обычных функций, параметры разделяются запятыми. Если после создания экземпляра объекта СОМ, представляющего MS Word, вы захотите создать в приложении новый документ, просто вызовите соответствующий метод. Задача решается методом add( ) субкласса Documents экземпляра $word:
$word->Documents->Add( );
В результате выполнения этой команды в окне приложения MS Word открывается новый документ.
mixed com_get(resource объект, string свойство) - возвращает значение свойства объектов СОМ. Первый параметр определяет экземпляр объекта СОМ, а второй — атрибут класса, к которому относится данный экземпляр.
Пример.
// Создать экземпляр объекта для приложения MS Word
$word=new COM("word.application") or exit("Не может стартовать Word!");
// Режим CapsLock либо включен (свойство CapsLock = 0),
// либо выключен (свойство CapsLock = 1).
$flag = com_get($word->Application.CapsLock);
// Преобразовать значение Sflag (0 или 1) в логическое значение
if ($flag == 1) $flag = "YES"; else $flag = "NO";
print "CAPS Lock activated: $flag"; // Вывести сообщение
$word->Quit();
Существует и другое решение - значение атрибута CapsLock можно получить при помощи стандартного для ООП синтаксиса обращения к атрибутам: $flag = $word->Application->CapsLock;
void com_set(resource объект, string свойство, mixed значение) - присваивает атрибуту объекта новое значение.
Первый параметр определяет экземпляр объекта СОМ, а второй — атрибут класса, к которому относится данный экземпляр. Третий параметр определяет новое значение свойства.
Пример. Создание и сохранение документа Word.
// Создать экземпляр объекта для приложения MS Word
$word=new COM("word.application") or exit("Не может стартовать Word!");
$word->visible = 1; // Активизировать окно
$word->Documents->Add();// Создать новый документ
// Вставить в документ фрагмент текста
$word->Selection->Typetext("Новый текст\n");
// Выбрать текстовый режим сохранения
$ok = com_set($word->Application, DefaultSaveFormat, "Text");
// Запросить у пользователя имя и сохранить документ
// по умолчанию документ сохраняется в текстовом формат!
$word->Documents[l]->Save;
$word->Quit();// Выйти из MS Word
?>
Существует и другое решение - новое значение атрибута DefaultSaveFormat можно присвоить непосредственно, как обычной переменной: $word->Application->DefaultSaveFormat = "Text".
Пример форматирования адресной книги из базы данных, в документе Word для построения отчета.
// Создать соединение с сервером MySQL
$host = "localhost"; $user = "root"; $pswd = ""; $db = "book";
$address_table = "addressbook";
mysql_connect($host. $user, $pswd) or exit("Не возможно открыть сервер!");
mysql_select_db($db) or exit("Не возможно открыть базы данных!");
// Выбрать из базы данных все записи
$query = "SELECT * FROM $address_table ORDER BY lastjiame";
$result = mysql_query($query);
// Создать новый объект COM для приложения MS Word
$word=new COM("word.application") or exit("Не стартует Word!");
MS Word $word->visible = 1; // Активизировать окно
$word->Documents->Add( ); // Открыть пустой документ.
while($row = mysql_fetch_array($result)); // Перебрать записи из таблицы адресов
{ $last_name = $row["last_name"]; $first_name = $row["first_name"];
$tel = $row["tel"]; $email = $row["email"];
// Вывести данные таблицы в открытый документ Word.
$word->Selection->Typetext("$last_name. $first_name\n");
$word->Selection->Typetext("tel. $tel\n"); $word->Selection->Typetext("email. $email:\n");
}
$word->Documents[l]->Save; // Запросить у пользователя имя документа.
$word->Quit();// Выйти из MS Word
Обзор объектной модели всех приложений семейства Office приведен по адресу http://www.microsoft.com/officedev/articles/Opg/toc/PGTOC.htm).
Ниже перечислены ссылки на некоторые полезные ресурсы, посвященные СОМ:
http://www.microsoft.com/com/nets/drgui.asp;
http://www.microsoft.com/com/default.asp;
http://www.comdeveloper.com.
