WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!

Глава 2. в страницах HTML и DHTML внимание, что в теге
Pages:     | 1 || 3 | 4 |   ...   | 6 |

«Вячеславович Фролов, Григорий Вячеславович Фролов в Интернете практическое руководство по созданию Web-приложений с базами данных Издание исправленное УДК 004.7 ББК 32.973.202 Фролов А. В., Фролов Г. ...»

-- [ Страница 2 ] --

особенность этого приложения — то, что поля для ввода и отобра жения преобразуемых чисел располагаются в разных документах HTML, загру женных в отдельные фреймы.

Для того чтобы ноля hexVal ue и decValue, мы ссыла емся на форму, расположенную внутри фрейма = = Здесь parent ссылается на объект, который является родительским по отно шению к документу HTML, содержащему сценарий. В данном случае это окно, в котором отображаются все наши фреймы.

Для чтения содержимого поля decValue применяется аналогичная техника:

= value;

Обратите внимание, что для текстового поля hexValue мы обработчик событий Он получает управление, когда пользователь пе редает полю фокус ввода. Задача обработчика заключается в том, чтобы снова фокус ввода, предотвратив непосредственное редактирование числа пользователем.

Теперь о том, как выполняется ввод преобразуемых десятичных чисел.

С каждой из кнопок, связанной с вводом десятичного числа, связан обработ чик события onClick, вызывающий функцию например;

INPUT Этой функции передаются два параметра — нажатая кнопка (как объект клас са button) и форма, в которой эта кнопка находится:

function form) I var szOld = var = (см, стр.) 56 Базы данных в Интернете. Практическое руководство = = false;

:

= value;

= = = nCurrent;

!

Задача функции — числа и его отображение в двух текстовых полях, расположенных в верхней части калькулятора:

function :

var szOld = var szNew = = = = false;

i szOld = szNew = nCurrent = = nCurrent;

:

В самом начале своей работы функция putNumber проверяет двоичную пере менную Если ее значение равно пользователь может ввести пер вую цифру нового числа. В этом случае функция putNumber обнуляет содержи мое текстовых полей hexVal ue и а также устанавливает значение newnumber, равное false.

Далее функция проставляет пользователем цифру перед перемен ной равной текущему из поля decValue. При этом она вызыва ет из класса String метод concat, предназначенный для слияния (конкатенации) строк.

На следующем этапе текущее вычисляется функцией Эта фун кция пытается интерпретировать текстовую строку, переданную ей в качестве параметра, как арифметическое выражение, возвращая результат интерпретации в виде численного значения. Результат сохраняется в переменной nCurrent и отображается в текстовом поле decValue.

Функция getResult, выполняющая преобразо вание, получает исходное число из поля decValue и функции преобразования записывается затем в поле hexValue:

function ;

= Глава 2. Сценарии в HTML и DHTML = Рассмотрим функцию преобразующую десятичное число в Результат преобразования эта функция возвращает в виде тексто вой строки:

function var szResult = var var = 0;

bNegative=false;

< 0) { nDec = -nDec;

} { nRem = % 16;

= nTmp < 16) break;

szResult = nTmp = szResult = != 0) { szResult = == true) return + szResult);

else return szResult;

!

В начале своей работы функция проверяет знак числа.

Отрицательные числа преобразуются в положительные. При этом в переменную bNegative true.

Базы данных в Интернете.

Алгоритм преобразования десятичного числа в шестнадцатеричное основан на делении исходного числа на 16 в цикле. Если целая часть результата деления, вычисляемая методом меньше 16, цикл завершается. В противном случае остаток от деления рассматривается как значение текущего разряда.

Для того чтобы получить представление шестнадцатерично го числа по его значению, мы извлекаем символ из строки вызывая для этого метод szResult = По цикла функция вычисляет старшие разряды результата, а также корректирует знак этого результата в с состоянием перемен ной bNegative.

Одновременная замена нескольких документов HTML в окнах разных фреймов Еще одна задача, для решения которой можно с успехом применять клиентские связана с одновременным отображением нескольких документов HTML в окнах разных фреймов.

Рассмотрим следующую ситуацию.

Предположим, мы готовим страницу с тремя фреймами. Верхний фрейм со держит заголовок, левый — некоторое подобие оглавления и, наконец, правый — показывает содержимое. Щелкая в левом фрейме, Вы можете просматривать в правой части окна различные документы HTML (рис. 2-20).

Авторский диск и Фролов, Григорий Фролов и Добро пожаловать!

и i Б том отоло и My Ccinputa Рис. 2-20. Главная страница с тремя фреймами С помощью клиентского сценария мы отобразим аннотацию на представленный в правом фрейме, во фрейме расположенного в вер части окна. Если Вы щелкнете кнопку Добро пожаловать, в заголовке Глава 2. Сценарии в HTML и DHTML появится наш логотип. Если же щелкнете кнопку Книги или Статьи, заголовок будет выглядеть так, как это показано на рис. 2-21 и 2- диск Фролова и I две в к рассмотрены с они Все АО МИФИ" Наши tyoitoe, Эта серия как пер с и кто уже с Рис. В результате щелчка кнопки Книги изменилось содержимое и верхнего фрейма Авторский диск Александра Фролова HI Вы можете из наших дм спи для КАПИТАЛ © "Три Рис. 2-22. Просмотр информации о статьях В листинге 2-14 мы показали исходный файла описания фреймов 2-14 хранится в файле на прилагаемом к книге компакт-диске.

Так же как и в примере, определены три фрейма:

(см. стр.) Базы данных Интернете. Практическое руководство Документ HTML, загружаемый в окно фрейма заголовка и отображающий ся сразу после загрузки фрейма (а также после того, как пользователь щелкнет кнопку Добро пожаловать), показан в листинге 2-15.

Листинг 2-15 Вы найдете в файле на прилагаемом к книге компакт-диске.

представлен листинге 2-16. Он имеет никаких интерес ных особенностей.

Листинг 2-16 Вы найдете в файле на прилагаемом к кни ге компакт-диске.

Гораздо важней для нас файл toc.html. В этом файле находятся функции сце нария JavaScript и ссылки на другие документы HTML. Этот файл показан в листинге 2-17.

Листинг 2-17 Вы найдете в файле на прилагаемом к книге компакт-диске.

Функция loadPage загружает в фреймы mainpage и title документы HTML, адреса URL которых передаются ей через параметры:

function !

!

Чтобы загрузить документ, мы свойство окна соответствующего фрейма:

Для вызова функции мы используем следующую конструкцию:

после ключевого слова javascript мы расположили строку вызова функции. Обратите внимание на применение одинарных и двойных кавычек. Так как в сценариях JavaScript вложение оди наковых кавычек недопустимо, для строк, функции в качестве параметров, мы применяем одинарные кавычки. же параметра HREF выделено при этом двойными кавычками.

Использование растровых изображений Растровые изображения в виде файлов формата GIF и JPEG широко применя ются в документах HTML, так как они позволяют значительно улучшить внеш ний вид страниц серверов Web.

2. в страницах HTML и DHTML К сожалению, HTML не позволяют добиться достаточно слож ных без дополнительных — Java, элементов управления ActiveX и клиентских сценариев. Фактически, кроме ста тической графики, Вы можете использовать только анимационные изображения, построенные с применением многосекционных файлов GIF, и изображения, нужные создания ссылок.

В этом разделе мы рассмотрим некоторые возможности графического офор мления страниц серверов Web, которые станут Вам доступны при использова нии клиентских сценариев. Снова заметим, что применять описанные здесь при емы нужно осмотрительно, так как пользователь может запретить работу сцена при настройке своего браузера.

Растровое изображение как объект Для того чтобы встроить растровое изображение в документ HTML, необходи мо использовать тег . Общий этого тега показан ниже:

Таблица 2-6. Параметры тега Параметр SRC Адрес URL файла с растровым графическим NAME Имя объекта, соответствующего растровому графическому изображе нию. Это имя может для ссылки на объект в кли ентском ALT Текстовая которая в тех случаях, когда браузер не может показывать изображения или когда такая воз можность отключена ALIGN текста изображения:

LEFT — границе;

RIGHT — по границе;

ТОР — по верхней границе;

— по центру изображения;

по нижней границе;

ТЕХТТОР — выравнивание по самых вы соких символов в строке;

— выравнивание середины текстовой строки относительно изображения;

BASELINE — нижней рамки изображения относительно базовой линии текстовой строки:

— выравнивание нижней границы изображения относитель но границы текущей строки 62 Базы Интернете. Практическое Таблица 2-6. Параметры тега Параметр Описание HEIGHT Высота изображения в пикселах WIDTH Ширина изображения в пикселах Ширина рамки (в пикселах) вокруг изображения (используется толь ко браузером Netscape Navigator) HSPACE Ширина (в пикселах) свободного пространства, отделяющего изобра жение от текста по горизонтали Ширина (в пикселах) свободного изобра жение от текста по вертикали Адрес так называемую карту которая используется для сегментированной графики ISMAP Этот параметр указывает, что данное изображение является сегменти рованным Параметры тега определяют адрес файла с изображением, выравнива ние текста, расположенного возле и т. д. С помощью параметров HEIGHT и WIDTH выполняется масштабирование графических изображений. Зна чение этих параметров указано в процентах от ширины окна Масштабирование позволяет графический файл весьма неболь шого размера: он площадь в окне браузера, но быстро передается через Интернет. Вы, однако, не вправе масштабировать сегментиро ванные графические и фоновые изображения.

Если в документе HTML размещено несколько растровых изображений, то Вы адресовать соответствующие объекты как элементы массива docu images. Например, первое адресуется следующим образом;

document. images[0]. Однако в некоторых случаях удобнее пользоваться имена ми изображений, определенными параметром NAME оператора .

Объект-изображение имеет свойство src, соответствующее параметру SRC оператора . Адресуясь к этому свойству, Вы можете не только определять текущий адрес URL изображения, но и новый, Этим мы и воспользу емся далее.

Динамическая замена растровых изображений Одна из наиболее интересных возможностей, доступных при использовании клиентских сценариев, заключается в динамической замене графических изображений, указанных в параметре SRC оператора в следующей строке сценария мы указываем, что изображение с именем должно иметь адрес Здесь мы указали неполный адрес однако, можно указывать и полный адрес.

Что произойдет при выполнении этой строки сценария?

Область, выделенная в окне браузера для растрового изображения бу заполнена изображением Если до этого там было другое изоб оно будет заменено новым.

Глава 2. Сценарии в страницах HTML и DHTML Какие возможности предоставляет замена растровых жений?

Во-первых, Вы можете создавать графические ссылки, которые изменяют свой вид, когда над ними курсор мыши.

растровых в клиентском сценарии Вы смо жете создавать изображения.

Рассмотрим примеры сценариев, иллюстрирующих эти возможности.

Изменение внешнего вида графических ссылок В HTML, изображенном на рис. 2-23, две кнопки, создан ные как растровые графические Они используются для активиза ции ссылок, соответствующих двум другим HTML.

My Рис. 2-23. Кнопка с надписью изменила свой цвет Если установить курсор над одной из на соответствующей кнопке изменит свой цвет. Это достигается динамической заменой графическо го изображения кнопки при помощи клиентского сценария.

Обратите внимание на исходный текст документа HTML, представленный в листинге 2-17.

Листинг 2-17 хранится в файле ch02/grbutton/grbutton,htmt на прилагаемом к книге компакт-диске.

Для создания ссылок мы воспользовались <А>. Он применяется здесь совместно с тегом поэтому ссылка отображается как графическое изобра Для тега ссылки <А> мы определили обработчики событий и Когда курсор мыши оказывается ссылкой (то есть над графическим ражением ссылки), управление обработчик события onMouseOver. Этот обработчик загружает изображение где слово «АУРАМЕДИА» на писано черным (для второй кнопки в аналогичной ситуации загружает ся изображение После того как пользователь отодвигает курсор мыши от кнопки, в дело включается обработчик события Он исходное изоб ражение, указанное в параметре SRC тега 64. Базы данных в Интернете. Практическое Создание анимационных изображений Б следующем примере мы используя динамическую смену растро вых графических изображений в клиентском сценарии, можно получить эффект анимации, На рис. 2-24 мы показали документ HTML именно с такой анимацией.

На View..

Рис. 2-24. Анимация с помощью клиентского сценария В окне браузера последовательно отображаются кадры анимационного изоб ражения 2-25), в а затем — в обратной последо вательности. Это выглядит так, как будто слово «Noise» периодически тонет в цветном «шуме» и затем вновь, Рис. 2-25. Изображения отдельных кадров анимационной последовательности Также обратите внимание вот на что: чтобы получить подобный эффект при помощи многосекционного файла GIF, размер этого файла удвоить.

чина заключается в том, что Вам придется включить в файл кадры в а затем в обратной Клиентский сценарий позволя ет более тонко управлять процессом отображения кадров, причем относитель но простыми средствами, в результате Вам станут доступны достаточно сложные визуальные эффекты.

Исходный текст документа HTML, в котором имеется сценарий, выполняю щий показан в листинге 2-18.

Листинг 2-18 Вы найдете в файле на прилагаемом к кни ге компакт-диске.

В теле документа с помощью тега мы разместили первый кадр анима

Кроме того, в теле нашего документа вызов Она предназначена для отображения очередного кадра анимационной после довательности в окне Вот исходный текст функции function showNextlmageO <:

I } !

+ i + "showNextlmageO", } В области заголовка HTML находится функции showNextlmage и двух глобальных переменных;

Переменная i хранит номер текущего кадра, в окне браузера.

Этот номер вначале увеличивается функцией showNextlmage от 1 до 16, а затем снова уменьшается до 1. Изменение номера происходит на 1 (в ту или иную сторону) при каждом вызове функции В переменной хранится направление изменения номера кадра. Зна чение true соответствует прямому направлению, а значение false — обратному.

Когда функция showNextlmage получает управление, она содер жимое переменной bForward. Если в переменной находится значение true, функция showNextlmage увеличивает значение переменной 1, а затем сравнива ет результат с числом 17. Когда отображение всех кадров в прямой последова тельности завершено, в переменную записывается после чего при следующем вызове функции showNextlmage номер текущего кадра увеличит ся, а уменьшится.

Для отображения очередного кадра функция showNextlmage изменяет значе ние свойства изображения document. как это ниже:

"imgO" + i + Базы данных в Интернете. Практическое руководство Имя файла, в котором кадра, из стро ки номера кадра, и строки Последнее, что делает функция showNextlmage, тем как возвратить уп равление, — функцию Напомним, что функция setTimeout устанавливает таймер. Задержка сраба тывания таймера определяется вторым параметром и в нашем случае равна 100 миллисекундам.

Когда таймер начнется выполнение строки которая была передана функции setTimeout в качестве первого параметра. Мы вызыва ем после окончания задержки функцию showNextlmage и, таким образом, обес печиваем вызов этой функции в бесконечном цикле.

Ожидание загрузки всех изображений Если Вы собираетесь размещать в своем документе HTML анимационное изоб ражение, состоящее из отдельных кадров, которые, в свою расположе ны в отдельных файлах, возникает одна проблема. Она связана с трудностью определения времени загрузки изображений анимационной последователь ности через медленные и нестабильные каналы Интернета.

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

В листинге 2-19 мы привели исходный текст документа HTML со сценари ем, который работает подобным образом.

Листинг 2-19 хранится в файле на прилагаемом к книге компакт-диске.

В теле документа HTML расположен сценарий, вызывающий последователь но функции и showNextlmage:

Функции в качестве параметра передается общее количество изображений в анимационной последовательности. В нашем случае оно равно 18.

Задача функции — заполнить массив класса Image:

function var i;

= new = + + Этот массив определен в области заголовка нашего документа HTML:

imgArray = Аггау(18);

Заполнение массива выполняется в цикле:

Глава 2. Сценарии в страницах HTML и DHTML = new = + + } • Для каждого элемента массива вначале с помощью ключевого слова new со объект класса а затем устанавливается значение свойства объекта. операция и приводит к файла изображения, выполняемой асинхронно.

После того как массив заполнен, можно вызывать функцию = 18;

var i=1;

var = new function if(bForward) \ i, } = imgArray[i-1]. src;

} Она идентична описанной в предыдущем примере, за исключением того, что для установки свойства src изображения Img элементы заранее массива = Наложение фильтра на графическое изображение Способ подмены графического изображения, описанный ранее в разделе нение внешнего вида графических имеет один существенный, на наш взгляд, недостаток. Для каждого изображения придется подготовить два файла, первый из которых будет соответствовать невыделенному состоянию графической ссылки, а — выделенному. Если таких ссылок много, это Базы данных в Интернете, Практическое руководство увеличит время загрузки страницы, а также объем файлов, хранящихся в ката логе Вашего сервера Web.

Между тем средствами DHTML Вы можете подсветить выделенные мышью графические ссылки без удвоения объема файлов с графикой. Этого достигают, изменяя одно из свойств стиля ячейки таблицы, содержащей графическую ссылку.

На рис. 2-26 показана страница нашего сервера Web, расположен ного в Интернете по адресу http://www.frolov.pp.ru.

- Internet У появилась стерт для Если вы случайно уд;

документ вам версия, сервер, эту файл.

ми завершена из р, В создан • IV -, :

Рис. 2-26. Подсвечивание элементов графического меню средствами DHTML В левой части этой страницы расположено достаточно длинное графическое меню. Оно собой набор зеленых кнопок с текстом белого цвета.

Когда пользователь помещает курсор мыши над такой кнопкой, она изменяет свой цвет на серый.

Как достигается такой эффект?

В листинге 2-20 мы привели исходный текст файла toc.html, образующего левый фрейм главной страницы нашего сервера Web.

Листинг 2-20 хранится в файле на прилагаемом к кни ге компакт-диске.

Вот фрагмент этого файла:

ячейки таблицы, содержащей графичес кую ссылку на файл main.html, мы определили обработчики событий (выделено в листинге 2-20 жирным шрифтом). Первое из них воз никает, когда курсор мыши над областью окна браузера, занима емой этой ячейкой, а второе — когда курсор покидает данную область.

В ответ на эти события вызываются функции GON и GOFF, исходные тексты которых приведены в листинге 2-20.

Обращаясь к объекту события srcElement, эти функции вначале веряют свойство tagName, которое содержит имя тега объекта, возбудившего бытие. В случае имя тега будет представлять собой текстовую стро ку Далее функция фильтр который при рисовании графического объекта.

Функция устанавливает фильтр действие которого заключается в цветного изображения в черно-белое с градациями серого:

function GON() { == "IMG") = "Gray";

Функция GOFF отменяет действие фильтра, в соответствующее свойство пустую строку.

function { == "IMG") = Помимо Вы использовать и другие фильтры, описанные в документации по DHTML, например фильтр цветное изображение.

что описанный в этом разделе способ подсветки работает только в браузере Microsoft Internet Explorer. Что же касается Netscape Navigator, то он имеет другую объектную модель. Если загрузить страницу toc.html в этот брау подсветка перестанет работать (тем не менее ссылки будут функциониро вать нормально).

Применение Cookie в клиентских сценариях В этом разделе мы расскажем Вам о таком важном элементе, как Cookie. Возмож но, Вы слышали о нем и даже что с его помощью недобросовестные ад министраторы серверов Web получают несанкционированный доступ к файлам Что такое Cookie?

Скажем сразу, что с кулинарным искусством это связано мало, хотя перево дится с английского языка как или Говоря кратко, Cookie представляет собой свойство HTML. Данные Cookie физически хра нятся локально на компьютере пользователя, загрузившего этот в виде 70 Базы данных в Практическое файлов. Cookie пользователь может настроить, или по собственному вкусу документ HTML, если для него предус такая настройка.

Проще всего представить себе Cookie как набор строковых параметров, каж дый из которых имеет имя и значение. Клиентский сценарий может создавать Cookie для документа HTML, определяя в нем произвольное количество пара метров и задавая для них значения. Далее такой набор парамет ров становится принадлежностью данного конкретного документа HTML и мо жет быть проанализирован, изменен или удален сценарием.

Как мы уже говорили, основное, для чего нужен Cookie, — так это для того, чтобы предоставить пользователю возможность настроить «под себя» интерфейс активных документов HTML. Эти параметры могут анализироваться или не анализироваться сервером Web, но в любом случае они хранятся у пользовате ля. И, разумеется, пропадут, если пользователь, скажем, отформатирует свой жесткий диск. После этого для документа HTML их придется заново.

Конечно, задачу индивидуальной настройки параметров страниц можно ре шить и другими способами, например при помощи активных серверных страниц ASP или расширений сервера Web типа программ CGI и приложений ISAPI.

Для этого на сервере надо установить базу данных, хранящую параметры для всех зарегистрированных в ней В этом случае расширение сервера Web способно динамически создавать настраиваемые документы HTML, используя для определения внешнего вида страниц хранящиеся в базе данных.

Возлагая задачу хранения параметров отдельных документов HTML на поль зовательский браузер, Вы сильно упрощаете задачу организации настройки ди алогового интерфейса. А для этого как раз нужны Cookie и клиентские сце нарии.

Еще одно практическое применение Cookie — хранение товара, выбранного посетителем Вашего виртуального электронного магазина. Покупатель отмеча ет разный товар на разных страницах сервера. При этом полный заказ сформирован и сохранен в Cookie, а затем по явному запросу пользователя пе реправляется на сервер.

Среди других применений Cookie можно отметить сетевые игры. В Cookie хранится, текущее состояние игры или другие параметры.

При разработке приложений Web помните, что приложения ни при каких условиях не должны хранить в Cookie такую информацию, как идентификато ры пользователей и пароли, а также номера кредитных карточек. Дело в том, что эта информация может оказаться доступной администраторам серверов Web и попасть в третьи руки. Обнаружив, что Ваше приложение пытается записывать в Cookie конфиденциальную информацию, предусмотрительные пользователи, скорее всего, откажутся от работы с ним.

Выполнение основных операций с Cookie Рассмотрим основные операции с Cookie, например Cookie, получение и изменение значений параметров Cookie, а также удаление Cookie.

Глава 2. Сценарии в страницах HTML и DHTML Создание Cookie Существуют два способа создания Cookie, первый из которых используется ширениями сервера Web, а второй — клиентскими сценариями. Мы рассмотрим их оба.

Создание Cookie расширением сервера Web Для чтобы создать Cookie первым способом, расширение сервера обыч но добавляет в заголовок HTTP динамически создаваемого документа HTML поле с именем Set-Cookie. В нем определяются имена и Cookie.

Когда расширение сервера вызывается из документа HTML, имеющего Cookie, параметры Cookie этому расширению через поле Cookie за головка HTTP и могут быть Заголовок HTTP, для создания Cookie, выглядит следую щим образом:

secure Описание отдельных полей заголовка приведено в таблице 2-7.

Таблица 2-7. Поля заголовка Set-Cookie Ноле Описание Произвольное имя параметра, определенного Cookie. Здесь Вы можете использовать любую строку, бы в ней не было пробе лов, занятых и двоеточий, В том случае, когда имя перс численные выше символы, используйте кодировку Текстовая строка значений параметров. В этой строке не должно быть пробелов, запятых и двоеточий, поэтому надо использовать для нее кодировку Дата автоматического удаления Cookie по Если эта дата не указана, а параметр expires отсутствует, Cookie будет удален сразу после того, как браузер закончит сеанс связи с Web часть для которой действует данный Cookie.

Если этот параметр не указан, то по умолчанию используется до адрес документа HTML, где был установлен Cookie Часть адреса путь к документу HTML, для которо го действует данный Cookie. Если этот параметр указан, то по умолчанию используется адрес документа где был установлен Cookie Если указано это поле, данные Cookie необходимо предавать ко с использованием протокола SSL. Такой протокол применяется HTTPS Все поля, кроме первых двух (Имя и Значение), не обязательны.

Дата должна быть записана в формате День_недели, ЧЧ: MM: CC — английское сокращение дня недели ДД — номер дня недели;

72 Базы данных в Интернете. Практическое — английское сокращение названия месяца (например, ГГ — две последние цифры года;

Ч — часы;

ММ — СС секунды.

Например, дату можно указать так:

14:45:00 GMT небольшое замечание относительно полей и path, определя ющих условие, при котором выполняется установка Cookie.

Когда браузер загружает документ HTML с сервера Web и среди HTTP этого документа есть заголовок «Set-Cookie», он проверяет возможность установки Cookie. В процессе проверки анализируется адрес откуда был загружен этот документ, а также содержимое полей domain и path, Если эти поля не указаны, то по умолчанию считается, что они соответству ют адресу по которому находится загруженный документ HTML. В этом случае установка Cookie.

Когда же указано поле domain, установка Cookie выполняется, только если документ загружен с сервера принадлежащего данному домену.

Средствами параметра path можно установить ограничение на адреса URL в рамках домена, для которых выполняется установка Cookie. При этом значение всем адресам данного домена.

Одновременно сервер Web способен создать несколько параметров Cookie, включив в заголовок документа HTML несколько заголовков Set-Cookie.

Создание Cookie в клиентском сценарии Второй способ предполагает свойства cookie. Это свой ство мы упомянули, о свойствах и методах объекта document, со здаваемого для документа загруженного в окно браузера.

В общем виде сценарий создает Cookie следующим образом:

= Здесь мы просто записываем в свойство cookie объекта document текстовую строку, определяющую Cookie.

Для пересчета текущей даты в формат GMT в клиентских сценариях можно использовать встроенные о чем мы расскажем чуть попозже.

В качестве примера ниже показан исходный текст функции addCookie, кото рую мы используем в своих сценариях для создания Cookie.

function { var dtExpires = new Date();

var = + dtDaysExpires * 24 * 60 * 60 * 1000);

dtExpiryDate = Глава 2. Сценарии в страницах HTML и DHTML = szName + + szValue + + dtExpiryDate;

Функция addCookie получает три Через параметр szName передается имя параметра, хранящегося в Cookie.

Параметр szValue определяет значение этого параметра Cookie. Что же касает ся последнего параметра — то он задает интервал времени по отношению к моменту создания Cookie, когда этот Cookie необходимо удалить.

Самое сложное в функции addCookie — это определение даты удаления Cookie и преобразование этой даты в формат Данная задача решается следующим образом.

Прежде всего, функция addCookie создает объект класса Date с помощью клю чевого слова new:

dtExpires = new Date();

Записанная таким образом в переменную dtExpires дата соответствует ту вызова функции addCookie.

Далее с помощью метода функция addCookie определяет текущую дату в миллисекундах и прибавляет к результату значение параметра dtDaysExpires, функцией, умноженное на константу (24*60*60*1000):

dtExpires, + dtDaysExpires * 24 * 60 * 60 * Константа — это количество часов в сутках, умноженное количество ми нут в часе, затем на количество секунд в минуте и, наконец, на количество мил лисекунд в Результат вычислений записывается при помощи метода в ную даты dtExpires. Теперь здесь хранится дата автоматического уничтожения Cookie браузером. Осталось лишь преобразовать эту дату в формат Такое преобразование нетрудно сделать с специально предназна ченного для этого метода toGMTString, возвращающего текстовую строку в нуж ном нам формате:

dtExpiryDate = Теперь нам остается только сформировать текстовую строку определения Cookie и записать ее в свойство cookie:

= szName + + szValue + + dtExpiryDate;

На этом создание Cookie завершено.

Теперь, когда в Вашем распоряжении есть функция addCookie, создание Cookie представляет собой очень простую задачу. в следующей строке мы создаем Cookie с именем Count и значением 0, причем через 10 дней брау зер автоматически удалит этот Cookie:

При необходимости использования параметров Cookie, например path или domain, Вы можете немного текст addCookie. С этой за дачей Вы легко справитесь самостоятельно.

74 Базы данных в Интернете. Практическое руководство Получение значения Cookie Итак, Вы научились создавать Cookie в клиентских сценариях. Теперь ем решить другую задачу — значения параметров Cookie.

Она сводится к простому сканированию текстовой строки, полученной сле дующим образом:

var = В этой строке Вам нужно найти подстроку а затем извлечь полученное значение.

Для облегчения этой работы Вы можете воспользоваться функцией Cookie. Исходный текст этой функции приведен ниже:

function { i = = 0;

= 0;

= <= { nStartPosition = i;

nEndPosition = nStartPosition + == szName) nStartPosition = nEndPosition 1;

nEndPosition = if(nEndPosition < nStartPosition) nEndPosition = return break;

return :

строки из свойства cookie и записи этой строки к szCookieString организует циклический про смотр всех символов этой строки. Условием завершения цикла является про смотр всех символов szCookieString. length.

Сравнивая имя параметра с подстрокой, извлеченной из строки при помощи метода findCookie пытается найти нуж ный параметр. Если оказывается успешной, функция findCookie про пускает символ присваивания, извлекая значение параметра, точ кой с Это значение возвращается функцией findCookie.

Глава 2. Сценарии в страницах HTML и DHTML Если же поиск неудачен, функция пустую строку.

Какие возможности функция findCookie?

Во-первых, она позволит Вам проверить, ли для данного докумен та Cookie с заданным именем:

== I // cookie с Visit установлен } else { // cookie с именем Visit не Для того чтобы записать в текстовую переменную значение параметра Cookie с заданным именем, Вы должны сделать следующее:

var = Как видите, пользоваться достаточно просто.

Изменение значения параметра Cookie Для изменения значения параметра Cookie с заданным именем Вы можете про сто вызвать еще раз:

addCookieC'Count", "О", 10);

Значение параметра равно О // Значение параметра Count Здесь мы вначале установили для параметра Count значение 0, а затем нили это значение на 5.

Удаление Cookie Самый простой способ удалить Cookie — установить для него такое время удаления, которое уже Для этого нужно получить текущую дату, уменьшить ее, на одну микросекунду, а затем изменить значение Все это делает функция "unction dtExpires = new - 1);

szValue = = + + szValue + + В последней строке этой функции мы указали такое значение параметра при котором Cookie будет удален браузером.

Базы данных в Интернете, Практическое Ограничения использование Cookie На использование Cookie накладываются определенные перечис ленные ниже:

всего можно создать не более 300 Cookie;

необходимо, чтобы размер каждого Cookie не превышал 4 кб;

для каждого домена может быть создано не более 20 Cookie - Если указанные ограничения будут нарушены, браузер может удалить самые старые Cookie или обрезать значения параметров Cookie.

Примеры использования В этом разделе на примере конкретных клиентских сценариев мы покажем, как можно Cookie для решения различных практических задач.

Фиксация повторных посещений страницы В первом примере документ HTML содержит форму с двумя (рис. 2-27).

demo.

Добро пожаловать!

Рис. 2-27. Кнопки для перехода к динамически создаваемому документу HTML и для удаления Cookie Если нажать на кнопку сценарий создаст новый документ HTML. Вне вид его зависит от того, сколько раз пользователь нажимал на эту кнопку.

Добро пожаловать!

Рис. 2-28. Такой документ HTML создается динамически при первом посещении Глава 2. Сценарии в страницах HTML и DHTML,, Кнопка Удалить cookie предназначена для удаления Cookie, созданного в нашем документе HTML.

Когда Вы нажимаете на GO! в первый раз, Cookie еще не создан. При.

этом документ HTML, изображенный на рис. 2-28.

Во и посещения внешний вид документа (рис. 2-29).

Рады видеть Вас СНОВА!

Рис. 2-29. Такой документ HTML создается динамически при втором посещении Теперь здесь виден новый заголовок, а также параметров Cookie с именами Visit, Count, и JavaUsed.

При каждом новом посещении параметра Count будет увеличиваться на единицу. Если же в документе, показанном на рис. 2-27, Вы нажмете кнопку Удалить cookie, подсчет посещений заново.

Исходный текст документа HTML показан в листинге 2-21.

Листинг 2-21 Вы найдете в файле на прилагаемом к книге компакт-диске.

Функции addCookie, и removeCookie, в этом докумен Вам уже знакомы. Они предназначены для создания Cookie, извлечения зна чения заданного Cookie и удаления Cookie соответственно.

Функция вызывается, когда нажимает в форме кноп ку functi on btnClick() else { var = var i=0;

!= !

i = szCnt;

(см. стр.) 78 Базы данных в Интернете. Практическое руководство i++;

= видеть Вас СНОВА!

} Прежде всего, эта ищет параметр Cookie с именем Visit. Если та кой параметр не найден, считается, что страница посещается в первый раз. В этом случае функция btnClick параметры Cookie с именами Visit и Count, а затем текст HTML с приглашением:

Когда пользователь посещает страницу повторно, параметр Cookie с именем Visit уже существует. В этом случае функция btnClick пытается найти параметр с именем Count и получить значение:

var szCnt = Это значение затем на и записывается обратно в па раметр Cookie с именем Count:

i = szCnt;

szCnt = 10);

Завершая работу, btnClick записывает приглашение для по вторно страницу пользователей и отображает содержимое свойства are welcome Обработчик события onClick Удалить cookie вызывает функцию для параметров Cookie с именами Count и Visit, удаляя их:

All Cookies" Записная книжка Cookie Notepad В следующем примере мы применили Cookie для хранения произвольного тек ста, набранного пользователем в многострочном окне редактирования (рис. 2-30).

При первой загрузке документа HTML с записной книжкой окно редактиро вания остается пустым. Вы можете набрать здесь любой текст и записать его в Cookie, щелкнув кнопку Сохранить текст. Если теперь Вы закроете документ HTML и откроете его набранный Вами ранее текст появится в окне ре дактирования.

Для того чтобы удалить текст и достаточно щелкнуть кнопку Удалить текст.

Глава 2. Сценарии в страницах HTML и DHTML 3 Cookie File Ей He Cookie Notepad cookie вы те хранить у локальные настройки текст текст Рис. 2-30. Документ с записной книжкой Cookie Notepad Исходный текст с Cookie Notepad казан в листинге 2-22.

Листинг 2-22 Вы найдете в файле на прилагаемом к книге компакт-диске.

Функция использованная нами здесь, имеет одну особенность:

перед текстовой строки в параметр Cookie она выполняет ее кодиров ку о формате вызывая для этого escape:

= + + + + dtExpiryDate;

Это необходимо по той что в окне редактирования текст может содержать пробелы и любые другие символы.

Аналогичные изменения мы внесли и в функцию f Она возвраща ет значение, перекодированное в обычный текст функцией выполня ющей действия противоположные действиям функции escape:

= nEndPosition);

return Когда нажимает кнопку Сохранить текст, вызывается функция btnClick:

function value, Эта просто записывает в параметр Cookie с именем MyText тексто строку, извлеченную из многострочного поля редактирования Com При удалении текста кнопкой Удалить текст вызывается функция remove удаляющая параметр с именем MyText, а также записывается пу стая строка в окно многострочного редактирования:

text" onClick = 80 Базы данных в Интернете. Практическое В самом конце тела документа HTML находится небольшой фрагмент сце нария, запускающийся сразу после загрузки этого документа:

var szMyText = != = szMyText;

Этот пытается получить значение параметра Cookie с MyText. Если это ему удается и f indCookie возвращает непустую стро ку, полученная строка записывается в окно многострочного поля редактирова ния В результате сразу после загрузки документа это окно оказывается заполненным текстом, сохраненным в Вы можете посмотреть системный файл, хранящий данные Cookie. Для это го откройте каталог Temporary Internet Files, расположенный в ката логе Microsoft Windows 95 или в каталоге операционной системы Microsoft Windows NT (здесь — системный каталог Microsoft Windows NT).

Вы можете скопировать файлы Cookie, на рабочий стол и открыть для просмотра любым текстовым редактором. То, что Вы увидите, показано ниже (содержимое файлов Cookie меняется в зависимости от системы и версии браузера):

Visit Count.

MyText \! Russian Глава 2. в страницах HTML и DHTML В самом начале файла видно имя Visit параметра Cookie. На следующих строках находятся значения других друг от друга стро кой Для записи символов кириллицы здесь использована кодировка URL.

Если удалить этот файл и затем открыть HTML, многострочное окно редактирования будет пустым. Удалив этот файл, мы удалим и расположен ный в Cookie.

Настройка параметров документа HTML Следующий пример демонстрирует, как можно для на стройки пользователем параметров документа HTML.

На рис. показан документ HTML с двумя кнопками и переключателем, имеющим зависимую I Посетите вашу страницу we Настройка персональной страницы Цвет фона:

Белый Желтый Зеленый.._ по Рис. 2-31. документ HTML, позволяющий настройку Если Вы верхнюю кнопку, то в окне браузера появится документ HTML, созданный динамически клиентским сценарием. В первый раз этот до кумент будет таким, как показано на рис. 2-32.

позволят Вам выбрать один из четырех цветов фона докумен Это значение будет храниться в Cookie. Для того чтобы вернуться к цвету, принятому по в документе HTML, показанному на рис. 2-31, нуж но нажать кнопку Параметры по умолчанию.

При последующих посещениях внешний вид документа изменится (рис. 2-33).

Базы данных в Интернете, руководство 1..

file Добро пожаловать!

Бы можете фона этой страницы при расположенных на главной Настройки вы эту следующий Рис. 2-32. Внешний вид документа при первом посещении видеть вас снова!

Вы посетили эту в 3 раз.

Рис. 2.33. Внешний вид документа при третьем посещении Его фон будет иметь такой какой был задан при помощи переключателей, Исходный текст документа HTML показан в листинге 2-23.

Листинг 2-23 Вы найдете в файле на прилагаемом к книге компакт-диске.

Помимо функций и предназначенных для работы с Cookie, в сценарии определена переменная предназначенная для хранения выбранного цвета фона, а также функции chkRadio и Функция btnGo прежде всего проверяет наличие параметра Cookie с именем Count:

function == { можете настроить цвет фона страницы при помощи document.

расположенных на главной использованы, когда посетите эту страницу в следующий Глава 2. Сценарии в страницах HTML и DHTML else var szCnt = != i = szCnt;

i++;

szCnt = i.

видеть Вас снова!

посетили эту страницу в + + ;

такого параметра нет, сценарий считает, что пользователь просматри вает этот документ в первый раз. В этом случае функция btnGo добавляет два Cookie с именами Count и bgColor:

Первый из них предназначен для хранения счетчика посещений, а второй — для хранения фона. Далее btnGo формирует документ с приглашением для пользователя, просматривающего документ в первый раз, и завершает свою работу, В том случае, когда сразу после вызова функция btnGo нашла параметр с именем Count и получила его значение, это значение увеличивается па и обратно. Кроме того, оно отображается в тексте документа:

document. видеть Вас снова!

посетили эту страницу в + Затем функция btnGo устанавливает цвет фона сформированного документа HTML в соответствии со значением, извлеченным из параметра с име нем bgColor:

Функция когда пользователь отмечает один из переклю чателей выбора цвета:

function { szColor = value;

10);

Эта функция записывает значение выбранного цвета в переменную szColor, также в Cookie с именем bgColor.

Базы данных в Интернете. Практическое И, наконец, функция удаляет параметр Cookie с именем Count и устанавливает в переменной белый фона, принятый по умолчанию:

function < Эта функция когда пользователь нажимает кнопку с надписью Параметры по умолчанию:

по умолчанию" Обратите внимание, что данная кнопка имеет тип reset. Когда пользователь ее щелкает, в форме отмечается переключатель, задающий белый цвет фона. Это происходит потому, что указанный переключатель определен с параметром CHECKED, а кнопка типа reset устанавливает все органы управления формы в исходное состояние.

Настройка браузера работы с Cookie Хотя Cookie не представляют особой опасности для пользователей, не каждый захочет, чтобы хранящаяся в них информация передавалась на сервер Web. В сочетании с другими полями заголовка HTTP данные Cookie соби рать определенную статистику о пользователях, а это нравится далеко всем.

Настраивая браузер соответствующим образом, могут ограни чить или вовсе отключить взаимодействие с Cookie. Вы должны это учитывать, если при создании активных документов HTML надеетесь на использование Cookie.

Microsoft Internet Explorer версии 5.0 допускает установку различ ных режимов работы с Cookie. Эти режимы указываются в панели Security Settings на вкладке Security блокнота Internet Options (рис. 2-34), доступного из меню Tools.

J that you О О Allow cookies О 0 Enable О. О © I Рис. 2-34. режимов работы с Cookie Глава 2. Сценарии HTML и DHTML По умолчанию активизирован Enable, разрешающий приме нение Cookie. Disable полностью запрещает использование Cookie. Если Вы пометите переключатель Prompt, при попытке установить Cookie на экране появится предупреждающее сообщение.

Отладка клиентских сценариев Если Вы установили Microsoft отладка клиентских сценариев не вызовет у Вас особых сложностей.

Запустите браузер Microsoft Internet Explorer и выберите из меню View стро ку Script Debugger. Далее в меню второго уровня укажите строку Break at Next Statement. Теперь браузер подготовлен к запуску сценария под отладкой.

Загрузите в окно браузера документ HTML с отлаживаемым сценарием. Это можно сделать перетаскивая мышью пиктограмму документа в окно браузера или средствами меню File Как только будет выполнена любая строка клиентского сценария, запустит ся отладчик сценариев, встроенный в Microsoft InterDev 6.0. Вы увидите диало говую панель Microsoft Development Environment, в которой Вам придется под твердить необходимость запуска сценария под отладкой, щелкнув кнопку Yes.

Когда Вы увидите вторую панель с запросом на открытие файла проекта, отка житесь от этой операции, щелкнув кнопку No.

В результате отобразится окно отладчика Microsoft InterDev 6.0, в которое загружен исходный текст документа со сценарием. Строка, на которой произошел останов, выделена цветом. Используя кнопки инструментальной панели, Вы сможете поэтапно выполнять устанавливать ные точки останова, просматривать локальных и т. д.

Подробное описание приемов работы с отладчиком выходит за рамки книги. При необходимости электронной справочной системой, встроенной в Microsoft InterDev 6.0.

Применение технологии ASP Существует два способа создания активного на базе Microsoft Internet Information Server — с применением программ расширения CGI или 1SAPI либо с помощью активных серверных страниц ASP.

Первый способ составление достаточно сложных программ на языке C++ или использование языков наподобие Perl. Про граммы расширения сервера Web представляют собой обычные приложения, на компьютере сервера Web. Они могут обращаться к базам дан ных таким же образом, как и обычные автономные приложения.

недостаток этого заключается, на наш взгляд, в сложности разработки и отладки программ расширений сервера Web, что значительно за медляет процесс разработки больших и сложных проектов. Особенно тяжело при этом проекты, которые постоянно изменяются.

Что же касается активных серверных страниц ASP, то они значительно про ще, хотя позволяют решать те же самые задачи, что и программные расширения сервера Web. Страницы ASP представляют собой текстовые файлы с конструк циями языка HTML и сценариями, составленными на таких языках программи рования, как JScript и Script. Фактически, если Вы уже этими язы ками программирования, изучение технологии ASP не отнимет у Вас много вре мени.

Возможность составления серверных приложений с применением высоко уровневых сценариев и технологии компонентов СОМ значительно уп рощает создание сложных приложений Web. При этом от разработчика тре буется глубокого понимания тонкостей программирования на уровне интерфей са операционной системы или прикладных интерфейсов базы данных. Все раз работки ведутся в терминах интерфейсов и свойств высокоуровневых компонен тов СОМ.

Отметим, что сценарии, расположенные в страницах ASP, могут быть ными и клиентскими. Серверные сценарии выделяются специальным образом и исполняются на сервере, в то время как клиентские сценарии работают на компьютере под управлением браузера, например Microsoft Inter net Explorer.

Результатом работы серверных сценариев ASP является динамически фор документа HTML, отсылаемый пользователю. Этот текст за гружается в окно браузера. сформированный документ HTML содержит клиентские сценарии, они будут выполнены браузером.

Глава 3. Применение технологии ASP Основы ASP Изучать ASP проще всего на примерах. Придержива ясь методики классиков программирования на языке С, мы всего подготовим простейшую документ HTML с заголовком ASP Заголовок формируется средствами серверно го Затем мы приведем еще несколько примеров, демонстриру некоторые возможности ASP.

Простейший пример Итак, убедитесь, что па Вашем компьютере сервер Internet Infor mation версии 4.0 или более новой. Затем создайте каталог с именем, на пример, Средствами управляющей консоли Microsoft Console виртуальный каталог, отображенный на каталог BookStore, и разрешите а также сценариев. Для этого в панели BookStore Properties (рис. 3-1) откройте вкладку Virtual Directory и пометьте переключа тели Read и Script (если они были Virtual tocaied С A URL fi" Write Г ' Рис. Настройка доступа к виртуальному каталогу BookStory Run in separate memory space (isolated process) позволяет приложения, относящиеся к данному в отдельном адрес ном пространстве. Несмотря на некоторое снижение быстродействия сервера Web, режим будет при отладке новых Если уста новить флажок у этого сбои в работе данного приложения не скажутся на общей работоспособности сервера Web.

Панель, показанная на рис. 3-1, позволяет настроить и другие важные пара можно запретить отключить разрешить отладку серверных и клиентских сценариев и т. д. Пол ную о настройке параметров виртуальных каталогов Вы найдете в электронной справочной системе или в документации к Microsoft Internet Server.

Базы данных в Интернете. Практическое к приложению.

Подготовив каталог на сервере Web, скопируйте в него файл HelloASP.asp, содержимое Вы найдете в листинге 3-1.

Листинг 3-1 хранится в файле на прилагаемом к книге ком пакт-диске.

Рассмотрим подробно содержимое этого файла.

Первая строка содержит оператор который указывает, что это сер верный сценарий на языке LANGUAGE "JScript" Этот оператор, как и все конструкции серверного в документах ASP, должен быть выделен при помощи последовательностей символов (откры вающая последовательность) и (закрывающая последовательность).

Далее в файле определяется переменная Ей присваивается значе ние текстовой строки «Hello, ASP var sHelloMsg = "Hello, ASP Конструкция вставляет в код динамически создаваемого до кумента HTML содержимое переменной sHelloMsg:

В результате в окно браузера (рис. 3-2) будет загружен HTML, исходный текст которого приведен ниже:

Hello, ASP Вы можете увидеть этот текст, выбрав строку Source из меню View в глав окне браузера. Обратите внимание, что в документе нет стей символов и Все конструкции, содержащие такие последователь ности, интерпретируются сервером. никогда не попадают в создаваемый документ HTML.

- In.. HI Hello, ASP, Рис. 3-2. Просмотр страницы в окне браузера Глава 3. Применение технологии ASP Пример с циклом Теперь мы рассмотрим более сложный пример страницы ASP, содержащий сер верный сценарий таблицы квадратов целых чисел от 0 до 5. При ра боте с базой данных Вам часто придется отображать отчеты в табличном виде на основе данных, полученных в результате выполнения запроса. При этом для формирования таблицы Вы сможете приемами, описанными в этом Исходный текст страницы ASP, таблицу, приводен в листинге 3-2.

Листинг 3-2 Вы найдете в файле на прилагаемом к книге компакт-диске.

Первая строка файла страницы ForASP.asp оператор язык серверного сценария:

LANGUAGE = Заголовок таблицы оформлен как обычно при помощи стандартных тегов языка HTML. Что же касается строк со значениями, то они формируются сер верным сценарием в цикле:

<ТН>Значение X*X а for(i=0;

i<=5;

i++) :

* Счетчиком служит i, принимающая значения от 0 до 5.

При помощи конструкции мы вставляем в ячейки каждой строки теку щее значение переменной i, а с помощью конструкции * — значение квадрата этой Ниже мы приводим исходный текст документа HTML, при помощи страницы ForASP.asp. Как документ HTML не никаких строк сценариев:

квадратов целых чисел от 0 до

Значение 00 11 39 416 (см. стр.) Внешний вид получившейся таблицы после загрузки документа в окно бра узера показан на рис. 3-3.

Таблица квадратов целых чисел от 0 до Dorm Рис. 3-3. Просмотр страницы в окне браузера Обработка формы Наше следующее приложение запрашивает у пользователя регистрацион ную информацию, а затем показывает ее пользователю в окне браузера. Цель данного примера — как с помощью серверных сценариев в ASP получить доступ к введенным при помощи форм.

На рис. изображена форма запроса идентификатора и пароля теля. Она для к нашему приложению Web. Пред полагается, что пользователь введет данные регистрации и щелкнет кнопку Подключиться. Кнопка Отменить для удаления содержимого из полей формы.

5 I" Регистрация пользователя ran Рис. 3-4. Форма для запроса идентификатора и пароля пользователя Глава 3. технологии ASP В нашем простом примере никакого не происходит. Вместо этого сервер Web создает и отправляет страницу HTML с регис трационной информацией (рис. 3-5).

Данные регистрации Пароль as Рис. 3-5. Просмотр регистрационной информации Форма находится в обычном документе HTML 3-3) и не имеет ни каких В частности, здесь мы не применяем клиентских сценари ев для проверки данных.

Листинг 3-3 Вы найдете в файле на прилагаемом к книге компакт-диске.

В качестве значения параметра ACTION тега
мы указали адрес URL страницы ASP (страница находится в том каталоге, что и файл Login поэтому адрес задан просто именем файла):

Для передачи данных формы мы использовали метод POST, Можно приме нить и метод GET, однако, как Вы знаете, ему свойственны ограничения по дли не передаваемых данных.

Теперь наша задача — составить серверный сценарий, принимающий данные из полей формы и отправляющий их назад пользователю в виде динамически документа HTML. Исходный текст такого сценария приведен в ли стинге 3-4.

Листинг 3-4 Вы найдете в файле ch03/ in asp на прилагаемом к книге компакт-диске.

Для извлечения значений параметров, переданных странице ASP (в нашем случае это значения формы) мы применили объект Request. Этот объект предназначен специально для получения информации от пользователя:

LANGUAGE = :

объекта позволяет содержимое полей формы, переданные POST. Наш сценарий сохраняет извлеченные таким образом значения идентификатора пользователя и его пароль и затем записывает их в 92 Базы данных в Интернете. Практическое переменные с именами и соответственно. Содержимое этих переменных отображается в ячейках таблицы:

Комбинирование клиентского и серверного сценариев Если Вы разрабатываете административную часть приложения Web (например, программу, для просмотра и редактирования списка клиентов электронного магазина) наряду с серверными сценариями можно широко ис пользовать В нашем следующем примере мы так и поступаем.

В листинге 3-5 представлены исходные тексты модифицированной формы регистрации, изображенной ранее на рис. 3-4.

Листинг Вы найдете в файле на прилагаемом к кни ге компакт-диске.

Теперь мы добавили к этой форме составленную на языке сценариев JavaScript. Эта функция управление по завершении ввода данных в поля формы, чтобы проверить, что пользователь указал идентифика тор и пароль:

Обращаем Ban Ее внимание на изменения, которые претерпел исходный текст формы по сравнению с листингом 3-3.

Во-первых, кнопка Подключиться имеет тип button, а не submit. Теперь она применяется не для непосредственного отправления данных формы на сервер, а только для вызова функции checkForm, как обработчик события onClick:

Во-вторых, к тегу мы добавили NAME, определяющий имя формы как Это имя потребуется нам для ссылки на поля формы в кли ентском сценарии.

И в-третьих, теперь к параметре ACTION указано имя другой страни цы ASP.

Функция выполняет простейшую проверку — указал ли пользова тель идентификатор и пароль. Если что-то пропущено, на появляется сообщение об ошибке. Если же пользователь все данные ввел пра вильно, функция checkForm отправляет их на сервер при помощи метода docu ment.

Эта незамысловатая операция уменьшает обращений на сервер Web, отсекая пользователей, не указавших свои пароли или имена.

ASP, получаст когда пользователь щелкнет кнопку Подключиться. как серверный, так и клиентский сценарий (лис Листинг 3-6 Вы найдете в файле на прилагаемом к книге компакт-диске.

Задача серверного строки которого выделены символами и — извлечение пользователя и пароля из данных формы с целью отображения в окне браузера (как и в предыдущем примере):

var Кроме того, сценарий используется для формирования таблицы:

function = <:/script> Базы данных в Интернете. руководство Эта функция получает управление после щелчка пользователем кнопки На зад (рис. 3-6). Она загружает в окно браузера документ с формой расположенной в файле Для отключения механизма мы технику, опи санную ранее и на добавлении к имени документа HTML фиктив в произвольной текстовой строки. В этом случае каждый раз при загрузке этого документа браузер будет считать его новым и не станет из кэша предыдущую копию.

- I... I Данные регистрации Рис. 3-6. Кнопка Назад предназначена для возврата к форме регистрации Приложения ASP и сеансы До сих нор при создании простейших приложений средствами ASP мы допускали некоторые упрощения. настало время определить такое поня тие, как ASP.

Фактически это подмножество приложений Web, с использовани ем технологии серверных страниц ASP и сервера Microsoft Internet Information Server.

Приложение ASP должно располагаться в отдельном виртуальном каталоге сервера Web или занимать корневой каталог сервера Web. В этом каталоге необходимо разместить;

документ HTML или ASP, которая загружается по умолчанию, ког да посетитель указывает данного каталога в своем браузере;

текстовый файл с именем определяющий обработчи ки событий, возникающих в работы приложения ASP;

каталоги, содержащие обычные документы HTML, активные страницы ASP, графические изображения, управления ActiveX, Java и дру гие объекты, имеющие отношение к приложению.

Что касается HTML или страницы ASP, загружаемой по умолча нию при доступе к каталогу приложения ASP, то его имя определяется при на параметров сервера Web. По сервер Microsoft Internet Infor mation Server использует для этой цели имя однако Вы можете из менить его на более привычное или любое другое.

Файл строго говоря, создавать не обязательно. Однако он необхо дим, Вы собираетесь отслеживать события, имеющие отношение ко всему приложению, или сохранять информацию в глобальных переменных приложения.

Глава 3. Применение технологии ASP Когда пользователь загружает страницу приложения ASP в свой сеанс его работы с приложением. В рамках сеанса создаются локаль (для данного сеанса) переменные, другим пользователям, ра ботающим с этим же приложением. О таких неременных Вы узна ете чуть позже.

Файл global.asa Как мы только что сказали, файл global.asa имеет отношение к ASP в целом и создается для каждого такого Он должен находится в каталога приложения ASP или в корне виртуального сер вера В этом файле определены обработчики следующих событий:

запуска останова ASP;

сеанса пользователя, загрузившего в свой браузер главную ASP;

4 завершения сеанса с приложением ASP.

Для каждого такого события Вы можете назначить индивидуальные обработ чики в виде серверных сценариев. Эти сценарии выполняют такие функции, как глобальных приложения и так называемых пере менных сеанса, создаваемых в рамках сеанса пользователей, выполнение ций с Cookie, к базам и т. д. Словом, сценарии файла global.asa для выполнения действий, которые при ложение в целом.

Система разработки Microsoft создает файла global.asa автоматически. Он имеет вид:

* Обращаем Ваше внимание, что в теге указан RUNAT=Server.

Он свидетельствует, что описанный тегом сценарий должен браузером, а сервером, то есть это серверный сценарий.

событий, обрабатываемых в файле global.asa, перечислен таблице 3-1.

Отслеживая события в файле global.asa, ASP определяет, когда к нему подключился очередной пользователь и когда он При этом автоматически учитываются такие как просмотр пользователем в окне его браузера других серверов Web и последующий возврат пользователя на стра ницу Вашего сервера. Кроме учитывается, что при передаче по 96 Базы данных в Интернете.

ненадежным каналам Интернета могут возникать значительные задержки. Если задержка 20 (время можно задать самостоятельно), сервер Web считает, что сеанс завершен. При этом возникает событие Таблица События, обрабатываемые и файле Событие Когда возникает Session_OnStart впервые любую страницу приложения завершает работу с или истекает период ожидания Application_OnStart Любой пользователь загружает впервые любую страницу при ложения Сервер Web работу В общем случае логика обработки событий в файле global.asa во многом оп ределяется логикой работы Вашего приложения. Вполне Вам не по требуется отслеживать моменты начала и завершения пользователей, хотя это все-таки делать. Например, если сеанс завершился по истечении периода ожидания, приложение может отключить пользователя и запросить при попытке повторного подключения.

Событие удобно применять для инициализации и загруз ки элементов управления ActiveX, которые в результате выполнения такой опе рации станут доступными всем пользователям.

Заметим, что файл global.asa может быть составлен и с: применением языка JavaScript. В этом случае в нем должны быть определены функции с именами Appl i cati on_OnStart и Applica tion_OnEnb. В документации и Microsoft, почти по всеместно демонстрируется использование в этом файле сценариев Script.

Мы же, будем работать со сценариями JavaScript и JScript.

Переменные приложений ASP Приложения Web, составленные с применением ASP, могут создавать глобаль ные переменные, доступные всем данного приложения, а также переменные сеанса, только отдельным клиентам во время их текуще го сеанса с сервером.

переменные приложения создаются и инициализируются обра ботчиками событий в файле global.asa. Их применяют для хранения значений, необходимых всем пользователям приложения. Так, для магази на это может быть, например, курс обмена валют, или значения скидок, для пользователей определенной категории, или ссылки на какие либо глобальные объекты.

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

сеанса также годятся для передачи данных между различными страницами ASP. Например, на одной странице Вы задаете параметры запросов, а на другой конструируете форму запроса в зависимости от этих параметров. Так 3. технологии ASP как пользователи имеют свои собственные переменные сеанса, они вправе хра нить в них собственные данные, из страниц ASP приложения.

Заметим, что переменные сеанса и объект Session, предназначенный для ра боты с доступны только в том случае, если пользователь разрешил в па раметрах браузера действие Cookie (приложение ASP также может запретить применение Cookie).

Это связано с тем, что механизм сеансов основан на хранении в Cookie гло бальных уникальных идентификаторов сеанса. Поэтому когда клиент отключа ет их, все переменные сеанса сохраняют свои значения только в пределах одной страницы ASP. В этом случае Вы не сможете их применить, например, для пе редачи информации из одной страницы в другую.

В качестве альтернативы передачи параметров между ASP допу стимо использовать другие способы, не зависящие от Cookie и сеансов. Напри мер, в строке ссылки на страницу ASP или в скрытых по лях форм.

Практическое применение ASP На примере нескольких несложных приложений ASP мы покажем технику ис пользования средств таких, как переменные сеанса и приложе ния. Мы также приведем исходные тексты примера приложения ASP, зующего файл global.asa для хранения количества текущих сеансов и текстовой строки в глобальной переменной приложения.

Создание мастера средствами ASP Вначале мы покажем Вам, как переменными сеанса, попутно ре шая практическую задачу — создание мастера платежей ASP.

Наш мастер платежей, как и мастера в обычных приложениях Windows, со стоит из набора страниц, связанных между собой кнопками просмотра. Пользо ватель может по ним в обоих на стра ницах различные параметры. Нам мастер поможет решить простейшую задачу — выбрать валюту и тип кредитной карточки для оплаты товара. Применяя исполь зованные нами Вы сможете создать мастера для выполнения любых других для выбора способа доставки товара, для создания системы поиска товара в каталогах и г. д.

Первая страница платежей показана на рис. 3-7.

Она играет роль главной мастера платежей и представляет собой обычный документ HTML с формой, кнопку Вперед. Если Вы щелкнете эту кнопку, на экране появится следующее окно мастера, показанное на рис. 3-8.

В нем заданы три переключателя, позволяющие выбрать для оплаты товара рубли, доллары или немецкие марки (Вы, конечно, можете добавить евро и любые другие валюты).

Если Вы щелкнете кнопку Назад или Отменить, на экране появится главная страница мастера (рис. 3-7), если же кнопку Вперед — перейдете к третьей стра нашего мастера платежей.

Третья страница показана на рис. 3-9. Список и кнопки на ней аналогичны элементам на второй странице.

Базы данных в Интернете.

Tools Мастер платежей Мастер вам выбрать способ, вы будете расплачиваться за товар Следуйте появляющимся на экране Рис. 3-7. Первое окно мастера платежей Выберите валюту Бы оплатить в в или Е немецких валюту щелкните кнопку Вперед.

Для отмены покупки щелкните кнопку рубли ;

доллары Г немецкие •i Рис. 3-8. Окно для валюты находясь на третьей странице Вы щелкнете кнопку Назад, то снова на предназначенной для выбора валюты.

Заметим, что после возврата к странице Вами ранее тип валюты будет сохранен. Этот эффект достигается с записи кода валюты в переменную В следующей странице мастера наше приложение Web показывает, какая валюта и какая кредитная карточка при покупки (рис. 3-10). Здесь Вы также можете разместить для перехода на страницу, завершающую покупки снятием денег со счета посетителя Вашего Нажимая кнопку, пользователь отправляется на страницу сервера Web процессингового где и происходит автоматическое снятие денег одобрения пользовате ля и при его участии). Там он, в частности, вводит номер карточки.

Глава 3. Применение технологии ASP - Internet E..

Выберите способ платежа Теперь вам нужно тип и по Вперед Для отмены кнопкой Отменить Рис. 3-9. Выбор типа кредитной карточки Кнопка Назад, как и раньше, позволяет вернуться к предыдущей мастера. Если Вы щелкнете ее, то что в списке типов кредитных карточек ранее выбранный Вами тип. Как Вы уже, наверное, догадались, посетителем магазина тип кредитной карточки мы хра ним в переменной сеанса.

Кнопка Отменить отсылает посетителя на главную страницу мастера - Е...

Подтверждение платежа с Для оплаты вы была сделана с помощью карточки American Express.

:

Рис. 3-10. Последнее окно мастера Теперь, когда мы рассказали Вам о назначении и работе перейдем к описанию исходных текстов этих Для обеспечения максимальной совместимости мастера платежей с обозре вателями различных типов мы совсем не в нем клиентские ограничившись только средствами серверных сценариев ASP. В ре посетителям страницы представляют собой простые до 100 Базы данных Интернете. Практическое руководство HTML, удобными и мощными, но с точки зрения совместимости конструкциями на сценариев текст главной страницы мастера показан в листинге 3-7.

Листинг 3-7 Вы найдете в файле на прилагаемом к книге компакт-диске.

Она содержит обычную форму с типа submit:

Узнайте, что такое Саентология...

Ваша жизнь поменяется...

Если щелкнуть ее мышью, в окно браузера загрузится документ из файла указанный в параметре ACTION тега .

Текст файла Masterl.asp в листинге 3-8. Помимо таблиц и форм, он содержит серверный сценарии, составленный на языке Листинг 3-8 Вы найдете в файле на прилагаемом к книге компакт-диске.

Первая строка файла Masterl.asp сообщает серверу Web о том, что данный файл содержит серверный сценарий, составленный на языке С этой кон струкцией Вы уже встречались. А вот вторая строка для Вас новая:

Записывая нулевое значение в свойство Expires объекта Response, мы тем самым сообщаем что полученная им страница уже устарела. В результате он не будет ее Это еще один способ отменить вание страниц, мешающее обновлению динамически создаваемых документов HTML в окне браузера. К сожалению, данное решение работает не всегда. Бо лее способ добавление к адресу страницы при ее загрузке фиктивного параметра в виде случайного числа.

Следующее действие серверного сценария — считывание содержимого пере сеанса с именем Эта операция выполняется при помощи объекта Session:

var sCurrency = Когда посетитель попадает на эту в раз, такой переменной сеанса еще не существует. Поэтому в локальную переменную sCurrency занесе но значение null. Когда же пользователь вернется на вторую страницу мастера с последующих страниц, сеанса уже содержит код вы бранной валюты.

Чтобы при повторных помечен переключатель, соответ ствующий выбранной ранее валюте, необходимо при генерации кода HTML указать в соответствующем параметр checked. Для этого мы мотрели в сценарии ASP три локальные переменные с именами sChk Dollar и С помощью конструкции в из этих переменных записывается текстовая строка «checked». В дальнейшем мы выра вида чтобы определить параметры тегов Это Глава 3. Применение технологии ASP нам отметить только один из трех переключателей, вы бор валюты:

а var var var == "rub") else == "dollar") else == "dm") else fflethod="POST"> Такой подход позволил нам определять начальное положение переключате ля с зависимой фиксацией из серверного расположенного в странице ASP. Причем, что важно, мы делаем это без клиентских сценари ев, применение которых возникновением потенциальных проблем со вместимости с различных типов.

Теперь мы расскажем о как реализованы между страницами нашего мастера платежей.

Кнопку Вперед надо поместить в ту же форму, что и переключатели выбора валюты, Такая вызвана тем, что, щелкнув ее, Вы передадите уп равление следующей странице мастера. Эта страница должна извлечь состояние переключателя выбора валюты, передаваемое вместе с содержимым формы.

Кнопки Назад и Отмена также следует расположить в отдельных формах, так как они предназначены для загрузки разных страниц. Предусмотрев для этих кнопок разные формы, мы можем указать в соответствующих параметрах action различные адреса URL. В первой странице мастера в результате щелчка кнопок Назад и Отмена загружается одна и та же страница однако во второй странице это уже будет не так.

102 Базы данных в Интернете. Практическое Рассмотрим исходный текст второй страницы мастера платежей, приведен ный в листинге 3-9.

Листинг 3-9 Вы найдете в файле на прилагаемом к книге компакт-диске.

В этом листинге после обычных строк, определяющих язык серверного сце и отменяющих кэширование, находятся строки, извлекающие код ной валюты. Он из параметров, переданных вместе с данными фор мы предыдущей страницей мастера, и записывается к переменную var sCurrency;

!= 0) else var Однако файл может загружен только в результате щел чка кнопки Вперед, на предыдущей страницы мастера, но и в результате щелчка кнопки Назад, на следующей странице В последнем случае загрузка файла будет из другой формы, не содержащей переключателя с именем Поэтому мы вначале определяем, есть ли элементы в наборе применяя конструкцию:

!= 0) Когда пользователь страницы мастера в прямом направлении, этот набор содержит один такой элемент е номером 1. Мы извлекаем его при помо щи объекта Request и сохраняем в сеансовой переменной sessCurrency:

Когда же пользователь страницы мастера в сеансовая переменная sessCurrency уже создана и Паш сценарий извлекает из нее код выбранной валюты обычным образом и записы в переменную sCurrency:

На следующем этапе в зависимости от содержимого переменной sCurrency записывает ту или иную текстовую строку с названием валюты в пе ременную которую мы для подготовки текста сооб щения с валюты (в виде конструкции <Х ifCsCurrency == Глава 3. технологии ASP = "рубли";

else == "dollar") sCurrencyName = "доллары";

else == "dm") sCurrencyName = "немецкие марки";

Третья страница мастера Master2.asp содержит список типов кредитных кар точек. Покупатель должен выбрать из пего ту, которую он будет использовать для оплаты. Инициализация данного списка должна с того, что пользователь может проходить страницы мастера как в прямом, так и в об ратном Когда покупатель «листает» страницы в прямом и по падает на страницу сеанса с кодом кредит ной карточки еще не определена. Б этом случае наш сценарий выбирает по умол чанию кредитную карточку VISA, записывая в переменную строку Эта строка вместе со строками и применяется помощи конструкции типа при формировании ти пов кредитных карточек:

var == "VISA") else "Mastercard") else == else Только и одной из переменных swChkMaster и swChkAEx может со держаться строка «selected», остальные будут пустыми. В результате ный тип кредитной карточки выбирается по умолчанию в списке

357I Базы данных в Интернете. руководство щелкнуть эту кнопку, в окно обозревателя начнет загружаться следую щая страница платежей из файла Что же касается кнопок Назад и Отменить, то соответствующие им формы ссылаются на страницы и соответственно:

страница нашего мастера платежей (листинг 3-10) на для отображения выбранной валюты и типа кредитной карточки, использо для покупки.

Листинг 3-10 Вы найдете в файле на прилагаемом к книге компакт-диске.

этого, данная страница и еще одну важную фун кцию она сохраняет в переменной сеанса выбранной кредит карточки:

!= 0) { reca else что эта переменная сеанса предыдущей мастера для инициализации списка типов кредитных карточек.

Если на страницу мастера с предыдущей страницы, наш сценарий запрашивает выбранный тин кредитной карточки и сохраняет его в переменной сеанса sessWirecard:

В противном этот код считывается в переменную при по мощи объекта Session из существующей переменной сеанса:

При формировании текстового о платеже сценарий использует локальные переменные и Они заполняются с менением операторов case:

Глава 3. Применение технологии ASP { break;

case break;

case "dm": марки";

break;

Сообщите сервера";

break;

var { case "VISA": break;

"Mastercard": break;

case break;

Сообщите администратору break;

Обратим Ваше внимание на строку «default» оператора. Если в рабо те нашего приложения Web возникла ошибка ссылки на вместо валюты и кредитной карточки мы выводим соответ ствующее Вы можете, например, добавить в него ссылку на почто вый адрес администратора сети или что-нибудь еще.

На последней нашего демонстрационного мастера нет кнопки Впе ред или какой-либо ссылки на другие страницы, однако в реальных приложе ниях стоит дополнить мастер страницами, такую информа цию, как номер кредитной карточки и срок се действия.

Подсчет количества активных сеансов В этом примере, представляющем собой простейший шаблон приложения ASP, мы демонстрируем использование для подсчета коли чества сеансов.

Session counter Dare Рис. 3-11. Четыре сеанса находятся в активном состоянии В качестве главной приложения выступает тинг 3-12), расположенный в корне виртуального каталога Если загрузить данный файл в окно браузера, Вы увидите заголовок counter» и количество активных сеансов. На рис. показан внешний вид окна после активизации сеансов одновременно.

Базы данных в Интернете. Практическое руководство Чтобы активизировать несколько сеансов, Вы можете открыть эту страницу в нескольких окнах браузера на или на нескольких компью терах в своей локальной сети.

Помимо файла в корне каталога нахо дится файл global.asa, исходный текст которого показан в листинге Листинг 3-11 Вы найдете в файле на прилагаемом к книге компакт-диске.

Первая строка а также указывает, что сценарий должен исполняться на сервере:

В результате импорта библиотеки ADO все константы, имеющие от ношение к ADO, будут автоматически доступны во всех страницах Вашего при ложения ASP.

Изучая содержимое Program Files\Common Files\System\ado, обра внимание на подкаталог Docs. В нем находится подробный справочник по использованию ADO (на английском языке), подготовленный в формате HTML.

В каталоге ADO Вы также файл с определениями для серверных сценариев VBScript, а также текстовые файлы с описанием осо бенностей текущей версии ADO и другой информацией.

Проект Интернет-магазина Теперь, когда Вы предварительно познакомились с ADO, мы Вам реализовать проект Интернет-магазина, для продажи книг.

Под нашим руководством Вы создадите базу данных магазина и набор страниц ASP, реализующих приложения покупателей и магазина.

Процедуры, в этом разделе, пригодятся Вам и при создании дру приложений ASP с базами данных, даже если они не имеют никакого отно шения к Интернет-магазинам.

Создание данных Прежде чем приступать к изучению страниц ASP Интернет-магазина, нужно создать базу данных. Мы предполагаем, что Вы уже установили Microsoft Глава 4. Связь приложений с базами данных через ADO SQL Server версии 7.0, а также пакет Service Pack 1 для SQL Server (или боле новый).

Сначала мы создадим базу и все необходимые затем подго товим хранимые процедуры и установим права к ним.

Подготовка таблиц Запустите приложение SQL Server Enterprise Manager и откройте сервер базы данных. Затем выберите из меню Action строку New Database. На экране по явится диалоговая панель Database на рис. 4-6, size Рис. 4-6. Создание базы данных Здесь на вкладке General в поле Name введите имя базы данных, которое мы будем использовать в нашем проекте, — Щелкнув кнопку с многото чием, расположенную в поле Location, выберите путь для размещения файла базы данных.

Хотя для проекта это и не Вы можете указать на вкладке General влияющие на рост файла данных.

По при создании покой на этой вкладке отмечается переключатель Automatically grow file, поэтому по мере добавления в таблицы базы данных записей файла базы данных будет увеличиваться.

Величина прироста может быть указана либо в мегабайтах, либо процентах.

Пометив переключатель Restrict filcgrowth в поле Maximum file size, Вы ничите рост файла базы данных.

Вкладка Transaction Log указать размер, прирост и ограничение для файла транзакций. О том, как правильно выбирать начальные параметры при создании базы данных, в деталях описано в документации SQL Server.

Теперь, после создания базы данных, нам нужно определить в ней четыре таблицы, в которых будут сведения о книгах, покупателях и персо нале магазина.

Базы данных в Интернете. Практическое Таблица managers Эта таблица содержит информацию о управля ющего его работой Интернет с помощью специального административно го приложения. Назначение полей таблицы объясняется таблице 4-6.

Таблица 4-6. Поля таблицы managers Поле Тип Описание int Ключевое поле с атрибутом IDENTITY однозначно идентифи цирует запись в таблице managers Name Имя сотрудника, используется в идентификатора при подключении к приложению Password Пароль сотрудника LastLogin Время, сотрудник подключался к системе в последний раз Ri ghts varchar(16) Права Когда сотрудник подключается к административному приложению, он вво дит свой идентификатор и пароль. проверяет, есть ли такой ватель в таблице и правильно ли указан Если все верно, при ложение из поля Rights текстовое описание прав сотрудника и обнов ляет поле LastLogin, фиксируя его подключения к системе.

Чтобы создать данную таблицу в базе данных запустите приложе ние SQL Server Enterprise Manager (если оно еще не а затем выбери те из меню Tools строку SQL Server Query Analyzer. В результате будет запу щено приложение SQL Server Query Analyzer, главное окно которого показано на рис. 4-7.

cable [dbo]., [ [Маме] MO" NOT ' Рис. 4-7. Приложение SQL Server Query Analyzer Следующий шаг очень Выберите в списке DB, расположенном в правой части инструментальной панели окна Query, базу данных Bookstore, как это показано на рис. 4-7.

мы будем запускать SQL контексте именно этой базы данных.

Глава 4. Связь с базами данных через ADG Далее воспользуйтесь строкой Open в меню File для выбора файла SQL с именем создающего таблицу managers. Содержимое этого файла показано в листинге Листинг 4-1 Вы найдете в файле на прилагаемом к книге компакт-диске, Загрузив SQL в окно приложения SQL Server Query Analyzer, за пустите его, щелкнув клавишу F5, кнопку запуска на пане ли (с изображением треугольника зеленого цвета) или выбрав строку Execute из меню Query. Если Вы не допустили ошибок при вводе сценария SQL, в ней части окна Query появится сообщение «The command(s) completed suc Таблица clients Таблица clients содержит сведения, предоставленные посетителями Вашего ма газина при а также дополнительные — дату регистрации и адрес IP, с которого выполнялась регистрация. Посетитель магазина работает с этой и еще одной таблицей при помощи созданного нами приложения покупа теля Интернет-магазина.

Поля таблицы clients описаны в таблице 4-7.

Таблица 4-7. Поля таблицы clients Поле Тин Описание Идентификатор записи таблицы clients (ключевое поле) который должен указывать покупатель при подключении к пользовательскому приложению Пароль покупателя, выбранный им при Language varchar(50) Предпочтительный язык для отображения страниц. В нашем примере это поле заполняется, но не Money Money Общая сумма денег, потраченная покупателем в магази не с момента совершения первой покупки по время покупателя или неактивный).

Status используется Дата и время последнего посещения покупателем Интер Datetime нет-магазина имя покупателя, им при регистрации Адрес электронной указанный покупателем при регистрации Почтовый адрес mail Флаг рассылки рекламных жении но не проверяется) Дата и время Datetime Адрес с выполнялась регистрация покупателя 138 Базы данных Интернеге.

Некоторые поля этой таблицы для будущего расширения проекта. поле Language Вы можете использовать в том случае, если страницы Интернет-магазина на нескольких В этом случае посетитель при регистрации может указать, какой язык должен быть использо ван при отображении страниц.

Поле Status позволяет проверить, какие посетители но долго не делали никаких (например, больше года). Выяснив это, Вы можете их регистрационные записи. В этом ноле удобно отмечать ак тивность например, символом «А». Отмеченные таким образом за писи удалять не следует.

Поле spam применяют для автоматической рассылки рекламных покупателям Вашего магазина. Если при регистрации покупатель желание получать такие материалы, в это поле можно записать строку YES, а если пет — строку N0.

Поля RegisterDate и RegisterIP полезны с недобросовестными посетителями. Средствами утилит трассировки можно определить по адресу IP доменное имя сервера поставщика услуг Интернета, которым пользуется покупатель, а затем с его помощью вычислить и самого покупателя.

Хотя это и не предусмотрено в нашем проекте, Вы можете собирать и хранить таблице clients другую о посетителях, например версию исполь зованной ими операционной системы, название и версию браузера, доменное имя рабочей станции. Все данные на Web в заголовках HTTP, их легко получить при помощи сценария Для создания в базе Bookstore таблицы clients ем SQL Server Query Analyzer и файлом сценария SQL с именем (листинг 4-2).

Листинг 4-2 Вы в файле на при лагаемом к книге компакт-диске.

Обратите внимания на ограничения CONSTRAINT, определенные в clients. Они задают начальные при добавлении в таблицу clients CREATE TABLE ( [ClientID] IDENTITY (1, 1) NOT NULL, [varchar] (50) NOT NULL, [varchar] (50) NOT NULL, [Language] [varchar] (50) NOT NULL, [Money] [money] NOT NULL CONSTRAINT DEFAULT (0), [Status] [char] (1) NOT NULL CONSTRAINT DEFAULT ('N'), [LastLogin] NOT NULL CONSTRAINT DEFAULT (0), [int] NOT NULL CONSTRAINT DEFAULT (0), [varchar] (50) NOT NULL, [Email] [varchar] (80) NOT NULL, [mail] [varchar] (80) NULL, [spam] [char] (3) NOT NULL Глава 4. Связь приложений с базами данных через ADO CONSTRAINT DEFAULT [RegisterDate] NULL CONSTRAINT DEFAULT (15) NULL, CONSTRAINT [PK_clients] KEY С [ClientID] ) ON [PRIMARY] ) ON Например, поле spam инициализируется строкой по, а в поле RegisterDate автоматически заносится текущая дата, полученная от встроенной функции Состояние пользователя, хранящееся в поле Status, отмечается символом Когда посетитель сделает покупку, Вы можете записать сюда «А».

Мы сделали поля и Email CREATE UNIQUE INDEX ON ON GO CREATE UNIQUE INDEX [idxEMail] ON ON [PRIMARY] В результате мы исключили дублирование записей пателей с идентификаторами и адресами электронной почты. Если пользователь пытается зарегистрироваться и при этом выясняется, что ный им идентификатор или адрес почты уже есть в базе ему предлагается выбрать другой идентификатор и другой адрес электронной почты.

Таблица books В таблицу books сотрудники Вашего Интернет-магазина будут сведе ния о книгах, используя для этого административное приложение.

Покупатели также будут обращаться к этой по с помощью другого при ложения, созданного для них. В таблице books покупатели выбира ют нужные книги и кладут их в свою виртуальную «корзину».

Поля таблицы books описаны в таблице 4-8.

Таблица 4-8. Поля books Поле Тип Описание Идентификатор books (ключевое поле) Автор книги Title книги Publisher Название книгу Price Money Стоимость книги в условных Datetime Дата и время добавления информации о книге в таблицу books Varchar(2048) Аннотация на книгу книги указана в условных единицах, но это не ', что курс валюты может вдруг измениться. Так как Вы создаете в Базы данных в Практическое руководство нете, то покупатели могут для оплаты различные валюты, и тор гующему приложению придется выполнять стоимости. Тут-то и при годятся паши условные единицы.

Обратите внимание на поле Annotation, для хранения анно на книгу. Его максимальная длина составляет 2 048 байт, что стало воз можным только с появлением SQL Server версии 7.0. Максимально поле типа varchar может содержать 8 000 символов, что позволяет хранить в поле Annota tion объемистые аннотации.

реальный проект Вы можете добавить в табли цу books и другие поля, например номер ISBN, сведения о и т. п.

Сценарий SQL, предназначенный для создания таблицы books, находится в файле (листинг 4-3).

Pages:     | 1 || 3 | 4 |   ...   | 6 |



© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.