Прежде всего, .asa — это суффикс файла, который является аббревиатурой Active Server Application. Файл Global.asa может управлять двумя очень требовательными объектами в приложениях ASP: приложением и сеансом.
На самом деле это необязательный файл, в котором авторы программ могут указывать сценарии событий и объявлять объекты с областью действия сеанса и приложения. Содержимое этого файла не используется для отображения пользователю, а используется для хранения информации о событиях и объектов, используемых приложением глобально. Этот файл необходимо разместить в корневом каталоге приложения. Для каждого приложения может существовать только один файл Global.asa.
Наиболее распространенное заблуждение относительно файла Global.asa заключается в том, что его можно использовать в качестве библиотеки для часто используемых функций и подпрограмм. Файл Global.asa можно использовать только для создания ссылок на объекты и начала захвата, а также для завершения объектов приложения и объектов сеанса.
Доступ к файлу Global.asa в основном осуществляется на основе событий уровня сеанса и вызывается в следующих трех ситуациях:
1. При срабатывании события Application_OnStart или Application_OnEnd.
2. Когда срабатывает событие Session_OnStart или Session_OnEnd.
3. При ссылке на объект (Объект), созданный в файле Global.asa.
Стандартный формат файла Global.asa следующий:
<SCRIPT LANGUAGE=VBScript RUNAT=Сервер>
Подприложение_OnStart
'Application_OnStart Запускается, когда любой клиент впервые посещает домашнюю страницу приложения.
Конец субтитра
SubSession_OnStart
'Session_OnStart запускается, когда клиент впервые запускает любую страницу в приложении ASP.
Конец субтитра
SubSession_OnEnd
'Session_OnEnd Запускается, когда время сеанса клиента истекает или происходит выход из приложения
Конец субтитра
Субприложение_OnEnd
'Application_OnEnd запускается при выключении WEB-сервера сайта
Конец субтитра
</СКРИПТ>
1. Сеанс_онСтарт
Давайте сначала посмотрим на код, который контролирует вход пользователей на страницу:
1. Global.asa (размещается в корневом каталоге отлаживаемого виртуального каталога)
<SCRIPT LANGUAGE=VBScript RUNAT=Сервер>
Sub Session_OnStart 'Пока пользователь входит на этот сайт в первый раз, он перейдет на домашнюю страницу.
ответ.перенаправление(http://www.vevb.com)
Конец субтитра
</СКРИПТ>
Затем выполните отладку любого файла в текущем виртуальном каталоге. Вы обнаружите, что все страницы переходят на http://www.vevb.com/<.
На этом примере принудительного входа на определенную страницу вы можете себе представить, что это очень необходимо, когда домашняя страница требует внимания.
Продолжим наблюдать за событиями Session_OnStart и Session_OnEnd на примере количества людей в сети.
2. Session_onEnd
2. Global.asa (размещается в корневом каталоге отлаживаемого виртуального каталога)
<SCRIPT LANGUAGE=VBScript RUNAT=Сервер>
Sub Application_onStart 'Начальное значение равно 0
Приложение(онлайн) = 0
Конец субтитра
Sub Session_onStart 'Пользователь посещает, и счетчик увеличивается на 1
Приложение.Блокировка
Приложение(OnLine) = Приложение(OnLine) + 1
Приложение.Разблокировать
Конец субтитра
Sub Session_OnEnd 'Конец пользовательского процесса, счетчик уменьшается на 1 (PS, если такой программы событий нет, будет выполнена программа доступа к странице.)
Приложение.Блокировка
Приложение(OnLine) = Приложение(OnLine) - 1
Приложение.Разблокировать
Конец субтитра
</СКРИПТ>
3.online.asp
<%
если request.querystring(logout)=true, то
сеанс.Отказаться()
ответ.конец
конец, если
%>
В настоящее время в сети есть <%=Application(OnLine)%>.
<a href=online.asp?logout=true>Выход</a>
Вы обнаружите, что на этой странице есть только одно приложение (OnLine), и на него все еще явно ссылаются. Так откуда же берется его ценность? Это ключ к файлу Global.asa. На этой машине можно последовательно открывать окна и выполнять отладку двумя способами: закрыть окно или выйти.
3. Продолжайте дорабатывать
В приведенной выше программе вы обнаружите, что эффект закрытия окна после выхода из соединения отличается от эффекта непосредственного закрытия окна. Поскольку сеанс существует в течение длительного времени, событие Session_OnEnd не может быть вызвано при непосредственном закрытии окна, так как же реализовать эту почти невозможную идею?
Как мы все знаем, когда веб-страница закрывается, это может быть связано с событием onunload. Итак, пока onunload может выполнять функцию выхода из сеанса, разве это не то, что нам нужно? Без лишних слов, давайте изменим online.asp.
3.online.asp
<%
если request.querystring(logout)=true, то
сеанс.Отказаться()
ответ.конец
конец, если
%>
<body onunload=javascript:window.open(exit.asp)>
В настоящее время в сети есть <%=Application(OnLine)%>.
<a href=online.asp?logout=true>Выход</a>
Обратите внимание, что когда online.asp выполняет выгрузку, будет открыт файл exit.asp. Затем просто установите session.Abandon() в файле exit.asp, и все будет в порядке.
4.exit.asp
<%session.Abandon()%>
<скрипт>
self.close()
</скрипт>
Конечно, добавлен скрипт для закрытия сеанса сразу после выхода из системы. Сейчас в принципе достаточно веб-приложения для онлайн-статистики.
4. Углубленное изучение Global.asa
Из приведенной выше отладки, если сделать выводы из одного примера, то обязательно зададите вопрос: Как контролировать количество зарегистрированных пользователей онлайн? Затем просмотрите следующие файлы один за другим:
5. Global.asa (размещается в корневом каталоге отлаживаемого виртуального каталога)
<SCRIPT LANGUAGE=VBScript RUNAT=Сервер>
Подприложение_OnStart
приложение (онлайн) = 0
Конец субтитра
SubSession_OnStart
Конец субтитра
SubSession_OnEnd
if session.contents(pass) then 'Определите, является ли это Session_OnEnd вошедшего в систему пользователя
приложение.lock
приложение(онлайн)=приложение(онлайн)-1
приложение.разблокировка
конец, если
Конец субтитра
Субприложение_OnEnd
Конец субтитра
</СКРИПТ>
Обратите внимание, что блок Session_OnStart в этом Global.asa не выполняет никаких событий.
Поскольку как только пользователь обращается к серверу, независимо от того, вошел ли пользователь в систему, будет сгенерировано событие OnStart, и сейчас необходимо, чтобы вошедший в систему пользователь находился в сети, поэтому значение Application (online) не может быть увеличено на 1 в событие OnStart.
А поскольку событие OnEnd будет сгенерировано независимо от того, завершится ли сеанс вошедшего в систему пользователя (если посетитель посещает сервер, но не входит в систему, событие OnEnd также будет сгенерировано после завершения его сеанса), поэтому оператор if используется в событии Session_OnEnd для определения того, является ли это событием OnEnd вошедшего в систему пользователя, если да, то количество людей в сети будет уменьшено на 1.
И стоит отметить: использование session.contents(pass), поскольку в событии OnEnd запрещено использование объектов Session, но переменные сеанса можно вызывать с помощью коллекции объектов Session. Другими словами, session(pass) нельзя записать напрямую, но необходимо написать session.contents(pass).
6. логин.asp
<%
если request.querystring(logout)=true, то
сеанс.Отказаться()
конец, если
submitname=request.form(отправить)
если submitname=отправить тогда
имя = запрос.форма (имя)
pwd=request.form(pwd)
если name=cnbruce и pwd=cnrose, то
сеанс(имя)=имя
сеанс (проход) = истина
еще
response.write Имя ошибки или пароль.<a href='login.asp'>Назад</a>
ответ.конец
конец, если
приложение.lock
приложение(онлайн)=приложение(онлайн)+1
приложение.разблокировка
%>
В настоящее время зарегистрировано <%=application(online)%> участников.
<a href=login.asp?logout=true>Выход</a>
<%else%>
<form action=login.asp метод=post>
<тип ввода=текстовое имя=имя><br>
<тип ввода=имя пароля=pwd><br>
<тип ввода=имя отправки=значение отправки=отправить>
<%конец, если%>
Он просто определяет, что когда имя пользователя — cnbruce, а пароль — cnrose, генерируется сеанс (pass)=true, который оценивается в Global.asa.
Пятое, продолжайте использовать свое воображение
Недостаточно просто подсчитать, сколько людей находится в сети, но также определить онлайн-статус пользователя.
Как вы можете себе представить, основной метод заключается в том, что когда пользователь входит в систему, установите для параметра онлайн значение 1 в файле login.asp (загрузить, если есть база данных), а когда пользователь не в сети, установите для параметра онлайн значение 0. Чтобы улучшить его, вы необходимо изменить событие Session_OnEnd. Установите онлайн значение 0 в этом событии (значение 0 также будет загружено)...