Июнь 2010

Самоучитель по креативному веб-дизайну. Книга 4, стр.61

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

Сеансы являются важным инструментом проектирования Web-сайтов, по — скольку они позволяют ASP-сценариям пользоваться переменными, сохраняю — щими свое состояние (то есть свои значения) во время пребывания посетителя

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

Самоучитель по креативному веб-дизайну. Книга 4, стр.62

В начале сеанса сервер посылает браузеру лишь одно «ключевое» значение —

идентификатор сеанса. Идентификатор сеанса представляет собой cookie-пере —

менную с именем ASPSESSIONID (ИЛИ ASPSESSJONIDXXXXXXXX В IIS версий 4 и

выше). Тогда вместо нескольких cookie-значений или скрытых элементов форм

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

мощью ASP-объекта session. Типичная cookie-переменная, содержащая идентифи — катор сеанса, похожа на одну из следующих строк (в зависимости от версии IIS):



ASPSESSIONID=908JIJFAO83UKNOINGUHDNE

ASPSESSIONIDPPFFFEER=908JIJFAO83UKNOINGUHDNE



На сервере каждый идентификатор сеанса представляет собой уникальную псевдослучайную последовательность букв и цифр, предназначенную для распоз — навания посетителя Web-сервером. Таким образом, идентификаторы сеанса по — добны идентификационным карточкам, которые Web-сервер выдает каждому по — сетителю сайта. Когда браузер запрашивает ASP-страницу, сервер проверяет, послал ли браузер идентификатор сеанса (т. е. предъявил ли браузер идентифика — ционную карточку посетителя). Если браузер не предъявил карточку, сервер вместе с запрошенной ASP-страницей пересылает ему и идентификатор сеанса. Если же сервер наряду с запросом на ASP-страницу прислал и идентификатор

Глава 11. Активные серверные страницы (ASP) 59 1





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

информации. Сервер предоставляет информацию, доступную через переменные

Сеанса, В ASP-объекте Session.



ПРАКТИКУМ

Таким образом, вашим ASP-сценариям не нужно предпринимать каких-либо спе —

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

Самоучитель по креативному веб-дизайну. Книга 4, стр.63

тор во всех последующих запросах на Web-страницы, совершаемых посетителем

во время сеанса. Когда браузер посылает cookie-переменную ASPSESSIONID (ИЛИ ASPSESSIONIDXXXXXXXX), сервер сравнивает ее значение со своим списком. Если значение найдено, сервер открывает файл сеанса браузера, хранящийся на жест — ком диске сервера, и делает доступными переменные сеанса с помощью объекта Session.

Сервер предоставляет переменные сеанса в виде коллекции в ASP-объекте

session. Таким образом, каждая переменная сеанса, как и элементы других ASP- коллекций, состоит из ключа (т. е. имени) и связанного с ним значения. Для созда — ния новой переменной сеанса нужно просто присвоить значение новому ключу:



Session(«firstName») = «Конрад»

Session(«lastName») = «Кинг»

Чтобы изменить значение переменной сеанса, необходимо существующему ключу присвоить новое значение. Например, если считать, что имеются две пе- ременные сеанса, созданные в предыдущем примере, то следующий код выдаст

Самоучитель по креативному веб-дизайну. Книга 4, стр.64

на Web-СТранИЦе «Конрад Кинг теперь Конрад Кингсли»:



Response. Write (Sessio n («firstName») & » » & Session(«lastName» ) & » теперь »

Session(«lastName» ) = «Кингсли»

Response. Write(Session(«firstName») & » » & Session(«lastName»)



Обратите внимание, что переменные сеанса можно использовать в выражени —

ях и в качестве параметров функций или методов. Достаточно просто вставить нужные имя объекта (наподобие имени коллекции) и ключ (т. е. имя перемен —

ной сеанса) в выражение или список параметров в вызове функции или метода.

Имейте в виду, что переменные сеанса занимают во время сеанса память Web — сервера. При запросе посетителем Web-страницы сервер читает с диска перемен —

ные сеанса (и их значения) и запоминает их в объекте session, который нахо — дится в оперативной памяти. Поэтому не забывайте во время сеанса уничтожать переменные сеанса, которые больше не нужны. Чтобы удалить из коллекции пе — ременную сеанса, достаточно присвоить ей значение Empty («Пусто»):



Session(«orderTotal») = Empty



Помните, что присваивание переменной сеанса пустой строки («») или зна — чения Nothing («Ничего»), вроде таких:

59 2 Глава 11. Активные серверные страницы (ASP)





Session(«productCodel») = » »

Session(«productQtyl») = Nothing



вовсе не эквивалентно присваиванию значения Empty.

Элементы с пустым значением — это все равно элементы (пусть и с пустым

значением), находящиеся в коллекции session. Как это ни парадоксально, в языке VBScript Nothing — это непустой объект. Поэтому и пустая строка, и Nothing в качестве значений переменных сеанса занимают во время сеанса па —

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

Кроме устойчивых переменных Web-сервер для каждого сеанса создает еще и таймер. Когда сервер запускает сеанс, он устанавливает свойство таймера

Session. Timeout в 20 минут для IIS версии 4 (10 минут для IIS версии 5). Тай —

мер начинает работать с начального интервала времени по умолчанию и отсчи —

тывает время до нуля (0). Когда таймер доходит до нуля, сервер завершает ASP —

сеанс и уничтожает всю связанную с ним информацию. Свойству

Session. Timeout в любом месте можно присвоить новое значение с помощью оператора сценария, например:



Session. Timeout = 1



Данный оператор устанавливает тайм-аут сеанса в одну минуту. (Свойству

Session. Timeout нельзя присвоить время, исчисляемое в долях. минуты.)

Каждый раз, когда обработчик ASP-сценариев получает запрос от браузера,

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

сайтом, Обработчик Сценариев Не Переустанавливает СВОЙСТВО Session. Timeout, И

после того как оно дойдет до нуля, сервер прекращает этот сеанс.

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

мечательно, если бы при переходе посетителя на другой Web-сайт или прекраще —

нии работы в Internet браузер отправлял серверу сообщение об «отключении». К сожалению, так не бывает — в силу отсутствия состояния в HTTP-соединениях. Конечно, прекращение сеанса посетителя по тайм-ауту может привести к конф — ликту, если посетитель «завис» на одной Web-странице и не выдавал запросов в течение времени тайм-аута, а затем снова начал работать со страницей.

Самоучитель по креативному веб-дизайну. Книга 4, стр.65

Если браузер предъявляет идентификатор сеанса для сеанса, закрытого серве —

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

ное значение, но создает новый объект session и связывает его с этим иденти —

фикатором. Поэтому ASP-сценарии должны с помощью функции isEmptyO удо — стовериться, что используемые ими переменные сеанса все еще существуют, если эти переменные созданы не сценарием. Например, следующий сценарий прове —

ряет нужные ему переменные сеанса (username и password) и перенаправляет

Глава 11. Активные серверные страницы (ASP) . 59 3





посетителя на страницу регистрации, если хотя бы одна из этих переменных от- сутствует в коллекции переменных сеанса:



If isEmpty(Session(«username»)) Then

Response. Redirect «/hwdtt/Chapter11/TiplOLogin. htm» End If

If isEmpty(Session(«password»)) Then

Response. Redirect «/hwdtt/Chapterll/TiplOLogin. htm» End If

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

Самоучитель по креативному веб-дизайну. Книга 4, стр.66



Выполнение запросов SQL и отображение результатов запроса в HTML-таблице

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

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

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

метод Response. write отобразит результаты выполнения этих запросов.



ПРАКТИКУМ

Чтобы выбрать данные из базы данных SQL и отобразить их в Web-странице, сценарию нужны три объекта: объект connection, объект для приема результатов запроса и ASP-объект Response. Объект соединения с базой данных можно со —

здать с помощью метода server. Createobject, как показано в следующем коде:



Dim objMySQLCon

Set objMySQLCon = Server. CreateObject(«ADODB. Connection»)

objMySQLCon. Connectionstring =

«DRIVER={MySQL};SERVER=NVBizNet;UID=root;PWD=;DATABASE=hwdtt»

objMySQLCon. Open



%> •



Сначала свойству Connectionstring объекта соединения (в данном приме —

ре — objMySQLCon) присваиваются значения, необходимые для подключения к

СУБД. Затем с помощью метода open объекта соединения открывается соедине- ние с СУБД. В нашем случае объект objMySQLCon использует ODBC-драйвер MySQL для открытия соединения с СУБД MySQL на компьютере с именем

NVBizNet. Сценарий подключается с именем привилегированного пользователя

594 Глава 11. Активные серверные страницы (ASP)



root, без пароля, и выбирает для использования базу данных hwdtt. После вы —

полнения метода open объекта соединения сценарий может пересылать в СУБД

SQL-операторы. | Н

Хотя можно позволить посетителям вводить запросы через HTML-формы, большинство сайтов предлагают посетителю выполнить предопределенные запро — сы или хранимые процедуры. Допустим, например, что имеется ASP-страница с

Самоучитель по креативному веб-дизайну. Книга 4, стр.67



!— Текст Web-страницы и определение формы —>

Самоучитель по креативному веб-дизайну. Книга 4, стр.68

Типичный сайт имеет более одного спонсора или же рекламирует несколько

товаров. Поэтому обычно на Web-странице на одной «доске объявлений» отобра — жаются несколько рекламных баннеров. Для этого необходима система ротации (то есть смены) рекламных баннеров, которая случайно (или последовательно) выбирает и отображает рекламные баннеры, указанные в списке. Вы можете вос —

пользоваться бесплатным программным приложением Ad Rotator, которое пред —

лагает компания Microsoft. Если вы устанавливаете Personal Web Server (PWS) или Internet Information Server (IIS) версии 4 или 5, то программа установки по умол — чанию копирует и Ad Rotator.

598 Глава 11. Активные серверные страницы (ASP)





ПРАКТИКУМ

Для использования Ad Rotator необходимо создать его файлы расписания и пере — направлений. В файле расписания ротатора {rotator schedule file) потребуется пере — числить графические изображения баннеров, которые должен показывать Ad Rotator. А файл перенаправлений {redirection file) — это ASP-страница, содержащая сценарий, генерирующий «отклик» баннера, т. е. направление браузера на целевую

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

Файл расписания имеет следующий формат:



REDIRECT URL-адрес-файла-перенаправления

WIDTH ширина-баннера-в-пикселях

HEIGHT высота-баннера-в-пикселях

BORDER ширина-рамки-баннера-в-пикселях



bannerImageURLl bannerRedirectionURLl

bannerImageAltAttributel bannerWeightl

bannerImageURL2

bannerRedirectionURL2

bannerImageAltAttribute2

bannerWeight2



Хоть это и необязательно, назовите свой файл расписания Ad Rotator наподо —

бие AdRotatorScheduie. asp и сохраните его в папке Web-сайта с именем вроде

BannerAds. Хотя ни имя файла, ни имя папки, предложенные здесь, не обяза —

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

Первые четыре строки файла расписания ротатора содержат информацию, ‘от — носящуюся ко всем рекламным баннерам, демонстрируемым в области показа. Каждая строка начинается с ключевого слова: REDIRECT («Перенаправить»), WIDTH («Ширина»), HEIGHT («Высота») или BORDER («Рамка»). Ниже описывается инфор — мация, помещаемая после ключевых слов каждой из четырех строк файла:

Самоучитель по креативному веб-дизайну. Книга 4, стр.69

• REDIRECT. Далее следует URL-адрес файла перенаправления. Когда посе — титель щелкает на баннере, соответствующая ему гиперссылка указывает

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

пример, ваш файл Перенаправления называется AdRedirect. asp и нахо —

дится в папке BannerAds на Web-сайте NVBizNet. com, то первая строка

файла расписания будет такой: REDIRECT http://www. NVBizNet. com/

hwdtt/BannerAds/AdRedirect. asp. МОЖНО также указывать ПОЛНЫЙ ВИрТу —

альный путь файла перенаправления, в нашем примере это /hwdtt/

BannerAds/AdRedirect. asp.

• WIDTH. Далее указывается ширина баннера в пикселях.

Глава 11. Активные серверные страницы (ASP) 59 9





• HEIGHT. Далее указывается высота баннера в пикселях.

• BORDER. Далее указывается ширина (в пикселях) рамки, отображаемой бра —

узером вокруг баннеров.



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

• bannerimageURL. URL-адрес полного виртуального пути изображения, ото- бражаемого в виде баннера. Например, для показа изображения баннера с

Именем SomeBanner. gif, находящегося В папке BannerAds На Сайте

NVBizNet. com, замените bannerimageURL на http://www. NVBizNet. com/

hwdtt/BannerAds/SomeBanner. gif ИЛИ /hwdtt/BannerAds/SomeBanner. gif.

• bannerRedirectionURL. URL-адрес целевой Web-страницы баннера, то есть страницы, на которую попадет посетитель при щелчке на этом баннере.

• bannerlmageAltAttribute. Атрибут alt дескриптора изображения

баннера. Браузер отображает текст атрибута ai t при загрузке изображения баннера, или если пользователь отключил отображение картинок, или при использовании Web-браузера, работающего в текстовом режиме.

• bannerweight. Насколько долго Ad Rotator должен показывать данный баннер по сравнению с другими баннерами, перечисленными в файле рас — писания ротатора. Пусть, например, расписание ротации содержит два баннера: у одного bannerweight равно 10, а у другого — 5. Тогда Ad

Rotator будет показывать первый баннер в два раза чаще, нежели второй.



Рекламный баннер можно отобразить, создав объект Ad Rotator с помощью

ВЫЗОВа метода Server. CreateObject, И затем ВЫЗВав метод GetAdvertisement этого объекта. Например, для отображения баннера в верхней части домашней (т. е. заглавной) страницы сайта сохраните приведенный ниже VBScript-сценарий

Самоучитель по креативному веб-дизайну. Книга 4, стр.70



Показ рекламного баннера —>





Response. Write

adRotatorObj. GetAdvertisement( _

«/hwdtt/Chapterll/BannerAds/AdRotatorSchedule. asp»)

%>


*** Содержимое домашней страницы ***



Полезные ссылки
Случайные записи
  • 24.02.2011">Руководство по actionscript. часть 7, стр. 010
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 056
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 109
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.13
  • 16.03.2011">Руководство по actionscript. часть 3, стр. 026
  • 15.03.2011">Руководство по actionscript. часть 3, стр. 045
  • 02.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.115
  • 24.02.2011">Руководство по actionscript. часть 6, стр. 113
  • 16.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.21
  • 05.11.2011">Как сделать кнопку для сайта
  • 03.03.2011">Руководство по actionscript. часть 5, стр. 067
  • 27.02.2011">Руководство по actionscript. часть 6, стр. 042
  • 27.02.2011">Руководство по actionscript. часть 6, стр. 034
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 142
  • 19.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.3
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...