0893fd23d894252ae4617d134b772944.ppt
- Количество слайдов: 56
Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4 -го курса кафедры Компьютерных технологий физического факультета Донецкого национального университета Технологии разработки Internetприложений ASP приложения ASP представляет собой среду написания сценариев на стороне сервера, которую можно использовать для динамического изменения Web-содержимого. Дон. НУ, кафедра КТ, проф. В. К. Толстых
Модель Active Server Pages Когда клиент запрашивает ASP-файл, то сервер переправляет файл обработчику ASP (C: WINDOWSSystem 32inetsrvasp. dll), где весь код сценария выполняется на стороне сервера и преобразуется в HTML-код. Затем полученный HTML-код отправляется Web-клиенту.
Включение в IIS обработчика asp-файлов
Создание ASP-страницы Пример 1 • Языком сценариев по умолчанию для создания ASP-страниц является VBScript. Можно использовать JScript, Java. Script, Perl. Script … • Указанием на необходимость обработки сервером ASP-сценариев является расширение файла *. asp • Знак процента с угловыми скобками используется в качестве ограничителя текста сценария. • Сценарии в требуемых местах вставляются в HTML-коды. <%@ Language=Java. Script %> <font face="MS Gothic"> <% //Создание переменной: var str; //Установка приветствия: str = "Привет всем!"; //Вывод приветствия через объект Response: Response. Write(str + "<BR>"); //или иначе — с использованием метода <%= : %> <%=str%> </font>
Создание ASP-страницы Пример 2 <%@ Language=Java. Script %> <html><body> <font face="MS Gothic"> <% var str; //Установка начальных значений переменных: str= "КУПИТЕ МОЙ ПРОДУКТ!"; // Вывод строки 4 раза с помощью цикла For: for (i = 2; i < 6; i++) { %> <center> <font size= <%= i %>> <%= str %> </font> </br> <% } %> </font> </body></html>
Пример 2 Располагаем сценарий (файл testfor. asp) в корне локального Web-сервера и открываем его браузером http: //localhost/testfor. asp
Включение других файлов Можно выносить какой-либо код в отдельный файл, и подключать его к другим файлам по мере необходимости с помощью команды include. Это очень удобно, если вы хотите вынести повторяющийся код в отдельный файл и использовать снова и снова в разных страницах: <!-- #include file="headersfilename. inc" --> Путь относительно текущего каталога <!-- #include virtual= " /filename. inc" --> Путь относительно корня приложения (домена) Важно: все includes в тексте отрабатываются до исполнения файла. Файл global. asa – если он есть, то является стартовой точкой ASP- приложения. Он может содержать обработчики событий для всего приложения и сессий клиентов: Application_On. Start Application_On. End Session_On. Start Session_On. End
Встроенные объекты ASP Application ASPError Object. Context Request Response Server Session Вызывает методы, свойства и устанавливает переменные приложения Управляет обработкой ошибок Управляет транзакциями Microsoft Transaction Server Вызывает методы и свойства для обработки запросов клиентов Вызывает методы и свойства для подготовки ответа клиенту Обеспечивает доступ к методам и свойствам сервера Вызывает методы, свойства и устанавливает переменные сессии Некоторые внешние объекты ASP File. System. Object Dictionary Connection Recordset Установка новых объектов: Вызывает методы и свойства для работы с файловой системой (Библиотека Windows – Scripting) Вызывает методы и свойства для работы с массивами строк в виде справочников (Библиотека Windows – Scripting) Предоставляет соединение с БД (Библиотека Windows – ADO) Предоставляющий набор записей, полученный от БД (Библиотека Windows – ADO) копирование dll-файла в каталог сервера, регистрация библиотеки с помощью программы regsvr 32. exe.
Объект Response используется для передачи выходной информации клиенту Response. семейство|свойство|метод Семейство: Cookies Указывает значение Cookie. Используя это семейство, можно установить значения Cookie. Свойства: Buffer Указывает на необходимость буферирования вывода. true – отправлять ответ только после его полного формирования в буфере (свойство должно инициироваться в первой строке скрипта). По умолчанию – false. Cache. Control Сообщение Proxy-серверам о возможности кэширования результатов выполнения ASP-страниц. Значение Public – Proxyсервер может кэшировать, Private – нет (по умолчанию). Charset Добавляет название набора символов "content-type" к заголовку HTML-ответа. Например, <% Response. Charset("Windows-1251") %> Code. Page Кодовая страница указывает серверу на способ кодирования знаков для разных языков.
Продолжение Объект Response Свойства (продолжение): Content. Type Указывает тип MIME содержимого HTTP для ответа, по умолчанию – это "content-type: text/html". Например, чтобы показать в Excel – <%Response. Content. Type="application/vnd. ms-excel"%> Expires Указывает промежуток времени в минутах, после которого истекает срок хранения страницы, кэшированной обозревателем. Expires. Absolute = [дата] [время] Указывает, когда истекает срок хранения страницы, кэшированной обозревателем. Например, <% Response. Expires. Absolute = "31, 05, 2020" %> Is. Client. Connected Показывает, не был ли клиент отключен от сервера. true –подключен. Pics Устанавливает значение HTTP-заголовка ответа pics-label. Позволяет вставлять любые строки в заголовок: <% Response. PICS("… ") %> Status Значение строки состояния, возвращенной сервером браузеру. Строка содержит трех-цифровой номер, указывающий код статуса и его описание. Например, 130 Move Permanently - отсутствие страницы, 200 OK – страница найдена и доставлена.
Продолжение Объект Response Методы: Add. Header Append. To. Log Дополняет заголовок HTML, Например, <% Response. Addheader( "WWW-Authenticate", "BASIC") %> информирует браузер, какой тип аутентификации используется. Добавляет строку в конец записи журнала Web-сервера, относящейся к этому запросу. Строка не может содержать символ запятой, общая длина добавляемой строки не должна превышать 80 символов. Binary. Write Записывает указанную информацию в текущий вывод HTTP без преобразо-вания символов. Метод удобен для вывода не строковой информации. Clear Стирает весь буферированный HTML-вывод. Метод не стирает информацию, связанную с заголовком, поэтому его можно использовать для управления ошибками. End Останавливает обработку файла. asp и возвращает текущий результат. Если свойство Response. Buffer было установлено в true, то метод Response. End освобождает буфер, выталкивая данные клиенту. Если вы не хотите выводить данные клиенту, то перед этим необходимо вызвать метод Response. Clear Flush Redirect Немедленно передает буферизованный вывод клиенту. Write Записывает переменную или текст в виде строки в текущий вывод HTTP, например, Response. Write("HTML-текст") Отправляет обозревателю сообщение о перенаправлении, вызывая попытку обозревателя подключиться к другому URL, например, Response. Redirect("http: //www. donnu. edu. ua/new. asp")
Объект Request извлекает значения параметров, которые браузер клиента передает серверу во время HTTP-запроса Request. семейство|свойство|метод("имя параметра") Семейства: Client. Certificate Значения полей, хранимых в клиентском сертификате, которые передаются в HTTP-запросе. Cookies Значения Cookie, которые передаются в HTTP-запросе. Form Значения параметров формы (POST-запрос) в теле HTTP-запроса. Query. String Значения параметров в заголовке HTTP-запроса (GET). Server. Variables Значения переменных сервера. Свойство: Total. Bytes Метод: Binary. Read Только для чтения; указывает общее число байт, передаваемых клиентом в теле запроса. Извлекает данные, передаваемые клиентом серверу, как часть запроса POST
Продолжение Объект Request Можно обратиться непосредственно ко всем переменным вызовом Request("имя параметра") без указания имени семейства. В этом случае Web-сервер ищет в семействах в следующем порядке: Query. String Form Cookies Client. Certificate Server. Variables Если переменные с одинаковыми именами существуют в нескольких семействах, объект Request возвращает первый обнаруженный экземпляр. Рекомендуется использовать полные имена при обращении к членам семейств, например: Request. Query. String("param 1")
Семейство Request. Form() Чтение параметров name, переданных методом POST Пример, файл Button. asp: <%@ Language=Java. Script %> <html><body> <H 3> Опыт в программировании </H 3> <% var str. Choice; str. Choice=String(Request. Form("choice")); if (str. Choice == "undefined") { %> <form name="F 1" method="POST" action="button. asp"> <input type="radio" name="choice" value="менее 1 года"> менее 1 года <input type="radio" name="choice" value="от 1 года до 5 лет"> от 1 года до 5 лет <input type="radio" name="choice" value="более 5 лет"> более 5 лет <input type="submit" name="B 1" value="Отправить"> </form> String – преобразование к строке, undefined – значение неопределенного параметра, String(undefined) = "undefined"
Продолжение файла Button. asp <% } else { Response. Write("<P>Был сделан выбор: <B>"+str. Choice+"</B></P>") } %> </body></html>
Семейство Request. Query. String () Чтение параметров name, переданных методом GET Пример, файл Get. Params. html: <html> <body> <H 3> Передача параметров методом GET </H 3> <A href="http: //localhost/Params. asp? one=GET%20 parameter">Передать параметр</A> </body> </html>
Продолжение Request. Query. String () Пример, файл Params. asp: <%@ Language=Java. Script %> <html><body> <H 3> Передан параметр методом GET: </H 3> <% Response. Write("one="+Request. Query. String("one")); %> </body></html>
Коллекция Response. Cookies Устанавливает значения для Сookie. Если указанный Сookie не существует, то создает его. Если Сookie существует, то перезаписывает. Response. Cookies(имя)(ключ). аттрибуты = значение ключ (необязательный параметр) создает в куки (контейнер Cookies) множество пар значений ключ_N= значение_N. аттрибуты – это информация о куки (необязательный параметр) : Domain Если указан, то куки передаются только по запросу из этого домена. Path Если указан, то куки передаются только по запросу с этого пути, иначе – используется путь ко всему приложению. Expires Дата истечения срока действия куки. Дата должна быть установлена для записи куки на клиентский жесткий диск после окончания сессии (закрытия браузера). Если этот атрибут не установлен, то дата окончания срока действия куки принимается текущей датой и куки прекратят срок действия сразу же по окончании сессии. Has. Keys Указывает, содержит ли данный куки ключи. Secure Указывает, защищены ли будут куки или нет. Значение – то, что необходимо присвоить данному ключу или атрибуту, если нет ни того, ни другого, то значение получит имя куки.
Примеры Cookies <% Response. Cookies("mycookie")("type 1") = "сахар" Response. Cookies("mycookie")("type 2") = "печенье" %> – будет создан следующий заголовок куки: => Set-Cookie: MYCOOKIE=TYPE 1=сахар&TYPE 2=печенье Если далее присвоить mycookie значение без ключей, то это разрушит type 1 и type 2 –ключи, например, <% Response. Cookies("my. Cookie") = "шоколадный зефир" %> => Set-Cookie: MYCOOKIE= шоколадный зефир Можно проверить существование ключей следующим способом: <%= "Есть ли ключи? – " + Response. Cookies("my. Cookie"). Has. Keys %> Если будет выведено true, значит ключи у my. Cookie существуют. Пример установки даты истечения срока действия куки: <% Response. Cookies("my. Cookie"). Expires= "5, 10, 2008" %>
Коллекция Request. Cookies Используется для чтения данных Cookie Например, чтение значения имени куки: <% var name=Request. Cookies("mycookie"); Response. Write(“My cookie =" + name) %> Записываем клиенту коллекцию куки по имени user с ключами, содержащими информацию о некотором user: <% Response. Cookies("user")("firstname")="John" Response. Cookies("user")("lastname")="Smith" Response. Cookies("user")("country")="Norway" Response. Cookies("user")("age")="25" Response. Cookies("firstname")="Alex" %> Далее, в последующем запросе, читаем всю информацию из куки, установленных у клиента:
Чтение установленных Cookies <%@ Language=VBScript %> <html><body> <% Переменные: x – имя куки, y – имя ключа dim x, y for each x in Request. Cookies Response. Write("<p>") if Request. Cookies(x). Has. Keys then for each y in Request. Cookies(x) Response. Write("<b>" & x & ": </b>" & y & "=" & Request. Cookies(x)(y)) Response. Write("<br />") next Вывод значений куки с ключами else Response. Write(x & "=" & Request. Cookies(x) & "<br />") end if Response. Write "</p>" Вывод значений куки без ключей next %> </body></html>
Объект Server Обеспечивает доступ к методам и свойствам сервера Server. свойство|метод Свойство: Script. Timeout время, в течении которого скрипт может выполняться. Методы: Create. Object(prog. ID) создает экземпляр компонента сервера. Execute(Path) вызывает . asp файл и выполняет его как если бы файл был частью ASP скрипта. Get. Last. Error() метод возвращает ASPError Object, описывающий, условия произошедшей ошибки.
Объект Server Методы: HTMLEncode(string) – выполняет HTML-кодирование указанной строки. URLEncode(string) – выполняет кодирование указанной строки по правилам URL. Map. Path(Path) – возвращает физический путь в файловой системе сервера для указанного виртуального адреса. Например, Server. Map. Path("test. asp") – получаем в виде c: inetpubwwwrootscripttest. asp Transfer(Path) – метод посылает всю информацию, которая была собрана для обработки одним. asp файлом в другой. asp-файл Path, текущего приложения. Состояние всех встроенных объектов и все текущее содержание для коллекций запроса будет доступно во втором файле. Функция Transfer(), в отличие от Response. Redirect не обращается к Web-клиенту.
Объект Server пример создания объекта Ad. Rotator – автоматически меняющиеся баннеры Файл Ad. Rotator. asp <%@ LANGUAGE = JScript %> <HTML> <HEAD><TITLE>Ad. Rotator Sample</TITLE></HEAD> <BODY> … <% var obj. Ad; obj. Ad = Server. Create. Object("MSWC. Ad. Rotator"); Response. Write(adrotator. Get. Advertisement("\PR\adrot. txt")); %> </BODY> </HTML> Взять баннеры из подкаталога PR в файле adrot. txt
Продолжение Объект Server Объект Ad. Rotator Файл adrot. txt WIDTH 210 HEIGHT 140 BORDER 0 * /PR/favorites/0001. gif http: //www. donnu. edu. ua Донецький національний університет, вибране 100 /PR/favorites/0002. gif http: //www. donnu. edu. ua Донецький національний університет, вибране 100 /PR/favorites/0003. gif http: //www. donnu. edu. ua Донецький національний університет, вибране 100
Объект Server пример использования метода Execute() для вызова исполнения. asp-файла 1 asp. asp <HTML><BODY> <% Response. Write("Вызываю 2 asp. asp <BR>") Server. Execute("2 asp. asp")%> </BODY></HTML> 2 asp. asp <HTML><BODY> <% Response. Write("Я файл 2 asp. asp")%> </BODY></HTML>
Продолжение Объект Server метод Execute
Объект Server пример использования метода Transfer() Файл 1. asp <%@LANGUAGE = JScript%> <HTML><BODY> <% Response. Write("Session. ID из файла 1. asp " + Session. ID); Response. Write("<BR>"); Response. Write( «Пересылка Session. ID в 2. asp <BR>") Server. Transfer("2. asp") %> </BODY></HTML> Файл 2. asp <%@LANGUAGE = JScript%> <HTML><BODY> <% Response. Write("IDSession из 1. asp " + Session. ID); %> </BODY></HTML>
Метод Transfer не разрывает сессию пользователя, а вызывает другой серверный файл в этом же приложении с передачей ему всех данных предыдущего файла. Пользователь этого даже не замечает.
Работа с файлами Если на сервере установлены библиотеки дополнительных компонент, то их можно использовать в ASP. Стандартные объекты для работы с файловой системой, например, File. System. Object, Text. Stream из библиотеки Scripting, доступны всегда. Text. Stream Установка новых объектов: ▪ копирование dll-файла в каталог сервера – Windows/System 32 ▪ регистрация библиотеки с помощью программы regsvr 32. exe или др. , например, COM+. Установка NTFS-разрешений на запись в файлы (локальная машина): 1. 2. через меню Windows Explorer включить доступ к управлению безопасностью: Сервис – Свойства папки… – Вид – Использовать простой общий доступ к файлам – снять флаг, для необходимого файла (папки) в его свойствах выбрать появившуюся закладку Безопасность, далее выбрать имя пользователя от которого вы работаете, или – Гостевую учётную запись, и поставить флаги на Чтение и Запись. Полный доступ на весь сайт (приложение) делать нельзя!
Объект File. System. Object и его методы Create. Text. File(File. Name[, overwrite[, code]]) – создает файл и возвращает объект Text. Stream, с помощью которого читают или пишут в файл объект File. Name – имя файла Overwite – может ли файл быть перезаписан (true/false) code – кодировка: true - Unicode Open. Text. File(File. Name[, Iomode[, Create[, Format]]]) – открывает файл и возвращает объект Text. Stream возвращает объект Iomode – открыть файл для чтения (1), записи (2), обновления (8) Create – создавать ли новый файл, если файла с таким File. Name нет Format – формат файла (ASCII, UNICODE) Close() – закрывает файл, связанный с объектом Text. Stream Delete. File(File. Name) – удаляет файл File. Exists(File. Name) – возвращает true, если файл существует Get. File. Name(File. Path) – возвращает имя файла File. Path – путь к файлу, относительный или полный Get. File. Version(File. Path) – возвращает номер версии файла
Объект Text. Stream и его свойства At. End. Of. Line – возвращает true, если файловый указатель находится перед маркером окончания файла для чтения. At. End. Of. Stream – возвращает true если файловый указатель находится в конце файла для чтение. Column – возвращает номер текущей позиции указателя в файле. Line – возвращает номер текущей строки в файле. После того, как файл открыт и еще ничего не записано, Line равно 1. файл открыт и еще ничего не записано,
Объект Text. Stream и его методы Read(i) – читает i количество символов из файла Read. All() – читает весь файл Read. Line() – читает строку из файла Skip(i) – пропускает i количество символов при чтении файла Skip. Line() – пропускает строку при чтении файла Write(“string”) – записывает символы string в файл Write. Blank. Lines(i) – записывает i пустых строк в файл Write. Line([“string”]) – записывает строку string в файл (с концом строки) string
Работа с файлом. Пример 1 <%@ Language=Java. Script %> <html> <body> <H 2>Запись/чтение в файл RW/rw_test. txt </h 2> <% // получение текущей даты var d, s = "Последняя дата обращения к файлу: "; d = new Date(); //создаем объект s += d. get. Date() + "/"; //получаем день s += d. get. Month() + "/"; //получаем месяц s += d. get. Year()+ " "; //получаем год // определяем абсолютный путь к текущему файлу *. asp var abs_path = String(Request. Server. Variables("PATH_TRANSLATED")); // удаляем из абсолютного пути ненужное имя. asp-файла и // дописываем в него необходимое имя RW/write_text. txt var file_to_write = abs_path. replace(/\w*. asp/, "\")+"RW/rw_test. txt";
// создаем объект f для работы с файлами f = new Active. XObject("Scripting. File. System. Object"); // следующие переменные отвечают, как именно будет открыт файл: // запись, обновление, чтение var For. Writing=2, For. Appending=8, For. Reading=1; // если файл существует if (f. File. Exists(file_to_write)) { // открываем файл в Text. Stream с идентификатором file для перезаписи // (для записи в файл должно быть NTFS-разрешение) var file = f. Open. Text. File(file_to_write, For. Writing); // записываем строку текущей даты, комментарий и пустую строку with (file) { Write. Line(s); Write("Запись прошла успешно! "); Write. Blank. Lines(1); } // закрываем файл file. close(); } else // если файл отсутствует, то выводим сообщение Response. Write("Запись: Файл отсутствует!");
// задаем путь к файлу для чтения (пусть совпадает с прежним) var file_to_read = abs_path. replace(/\w*. asp/, "\")+"RW/rw_test. txt"; // если файл существует if (f. File. Exists(file_to_write)) { // открываем файл для чтения file = f. Open. Text. File(file_to_read, For. Reading); // читаем и выводим весь файл Response. Write(file. Read. All()+“<P> Чтение прошло успешно!"); // закрываем файл file. close(); } else // если файл отсутствует, то выдаем сообщение Response. Write("Чтение: Файл отсутствует!"); %> </body> </html>
Результаты работы с файлом
Работа с файлом. Пример 2 Функция чтения строки посимвольно function Get. ALine(file){ // создаем переменные var fso, a, s = "", For. Reading=1; // создаем объект fso = new Active. XObject("Scripting. File. System. Object"); // открываем файл для чтения a = fso. Open. Text. File(file, For. Reading, false); // читаем строку посимвольно, пока не достигнем конца строки while (!a. At. End. Of. Line) ( s += a. Read(1); a. Close( ); return(s); // возвращаем строку return(s); }
Работа с файлом. Пример 3 Функция чтения файла построчно function Get. ALine(file){ // создаем переменные var fso, a, s = "", For. Reading=1; // создаем объект fso = new Active. XObject("Scripting. File. System. Object"); // открываем файл для чтения a = fso. Open. Text. File(file, For. Reading, false); //читаем файл построчно, пока не достигнем конца файла while (!a. At. End. Of. Stream); ( s += a. Read. Line( ); a. Close( ); return(s); // возвращаем строку-файл return(s); }
Объект Application Хранит информацию о приложении и глобальных переменных для всех пользователей приложения. Объект Application может быть использован для предоставления совместного доступа к информации всем пользователям данного приложения. Приложение, использующее ASP, определяется как все файлы . asp, расположенные в приложении IIS, в виртуальном каталоге и всех его подкаталогах. Все события приложения обрабатываются в файле global. asa, находящимся в корне приложения. Возможные события приложения: Application_On. Start Application_On. End Пример использования объекта Application в файле global. asa
Характеристики Application() Коллекции: Contents Чтение-запись переменных в объект Application. Например, <% Application("visitors") = Application("visitors") + 1 %> … Посетителей: <%Response. Write(Application("visitors"))%> содержит все переменные приложения. Например, <% Response. Write("Посетителей: "+ Application. Contents("visitors") %> Static. Objects Методы: Contents. Remove () содержит объекты, созданные с помощью тэга <OBJECT>. Используется для определения значений свойств объекта. удаляет переменную из объекта Application. Например, <% Application. Contents. Remove("visitors") %> Contents. Remove. All () удаляет все переменные из объекта Application. Например, <% Application. Contents. Remove. All() %> Lock() Unlock() запрещает изменение свойств объекта Application другими клиентами позволяет другим клиентам изменять свойства объекта Application
Объект Session Хранит информацию о пользовательской сессии и переменных пользователя. Работа объекта построена на неявном использовании временных cookies Переменные, хранящиеся в объекте Session не уничтожаются когда пользователь осуществляет переходы между страницами в приложении, а хранятся на протяжении существования сессии с браузером (по умолчанию – не более 20 мин. между запросами браузера). Web сервер автоматически создает объект Session когда страница приложения востребуется пользователем, который до сих пор не имел сессию. Сервер разрушает объект Session когда время "существования" сессии истекает или же сессия разрушается принудительно. Данный объект может быть создан только для браузеров, поддерживающих cookies. ASP позволяет создавать документы, не формирующие объект Session. Для этого нужно использовать директиву: <%@ Enable. Session. State=False %>
Характеристики Session() Коллекции: Чтение-запись переменных в объект Session. Например, <% Session("username")="Петя Иванов" %> … Привет <%Response. Write(Session("username"))%> Contents содержит все переменные сессии. Например, Static. Objects <% Response. Write("Имя: " + Session. Contents("username") %> содержит объекты, созданные с помощью тэга <OBJECT>. Методы: Contents. Remove () Используется для определения значений свойств объекта. удаляет переменную из объекта Session. Например, <% Session. Contents. Remove("username") %> Contents. Remove. All () удаляет все переменные из объекта Session. Например, <% Session. Contents. Remove. All() %> Contents. Abandon() удаляет все переменные в Session и высвобождает занятые ресурсы. Если по истечении времени "жизни" (тайм аут) метод не вызывается, то сервер сам "разрушает" Session. Далее, если открыть новую страницу, то создастся новый объект Session
Характеристики Session Свойства: Session. ID возвращает идентификатор сессии для данного пользователя. Каждая сессия имеет уникальный идентификатор, который создается сервером, когда начинается сессия. Time. Out указывает период времени в минутах, связанный с объектом Session для приложения. Если пользователь не обновит или не запросить страницу у сервера в течение указанного периода времени – сессия будет завершена. Например, <% Session. Timeout = 5 %> События: Session_On. Start Session_On. End возникает при старте сессии клиента. возникает при закрытии сессии клиента. Все события сессий и приложения ASP обрабатываются в файле global. asa в корне приложения (см. пример далее).
Пример событий сессии и приложения в файле global. asa Пример учёта посетителей сайта: <script language="JScript" runat="server"> function Application_On. Start() { Application("visitors")=0; } Скрипт выполняется на сервере Инициализация счётчика при старте приложения. Вводится переменная приложения visitors function Session_On. Start() Временно запретить пользователям { изменять переменные приложения Application. Lock; Application("visitors")=Application("visitors")+1; Наращивать счётчик при Application. Un. Lock; старте каждой сессии } </script> Разрешить пользователям далее изменять переменные приложения Просмотр количества посетителей сайта: <p>Посетителей: <%= Application("visitors") %></p>
Электронная почта Виртуальный SMTP-сервер IIS 5 Для отправки почтовых сообщений из ASP-приложений должен быть установлен (и запущен) виртуальный SMTP-сервер
Виртуальный SMTP-сервер IIS «Сообщения» , «Доставка»
Виртуальный SMTP-сервер IIS «Направляющий узел» Для не серверной ОС (неполноценная обработка доменных имен в почтовом адресе отправителя) может понадобиться уточнение IP-адреса реального SMTP-сервера [в квадратных скобках] , с которым будет связываться ваше ASPприложение
Электронная почта Функции работы с почтовыми сообщениями обеспечиваются за счет различных сторонних библиотек, например, CDONTS (Collaboration Data Objects for Windows NT Server-объекты данных для среды Windows NT Server), Asp. Email… и Asp. Email протокола SMPT. Для работы с библиотекой необходимо выполнить следующее: 1. скопировать файл. dll в директорию WINDOWS/SYSTEM 32 2. Для регистрации библиотеки: Пуск->Выполнить->в поле «Открыть» прописать : “regsvr 32. exe C: /WINDOWS/SYSTEM 32/файл. dll”
Объекты библиотеки CDONTS для работы с почтой Address. Entry Объект Address. Entry определяет адресацию информации, действительной для предоставленной системы запроса Attachment Позволяет создать вложение к письму Attachment. Folder Открывает нужную почтовую папку Message Позволяет составить сообщение, отправить или получить сообщение New. Mail Обеспечивает наиболее простой способ формирования и отсылки сообщения Recipient Содержит информацию о получателе письма
Объект New. Mail обеспечивает наиболее простой способ автоматического формирования сообщения (включая прикрепление вложений, если это необходимо) и их отсылку. Создание экземпляра объекта New. Mail (для каждого нового письма нужен новый экземпляр) выполняется с помощью метода Server. Create. Object: Server. Create. Object( идентификатор_программы ), где идентификатор_программы – указывает тип объекта, который будет создан. Формат идентификатора_программы следующий: [владелец] Компонент [. Версия]. Пример: var object = Server. Create. Object(“CDONTS. New. Mail”);
Объект New. Mail Свойства объекта Body. Format устанавливает формат текста объекта New. Mail. 0 - сообщение в формате HTML, 1 - plain text (обычный текст). Body Текст сообщения Subject Тема сообщения To Адрес получателя сообщения Сс Адреса получателей (через запятую) копии сообщения Bcс Адреса получателей копий сообщения, которые будут недоступны для просмотра From Адрес отправителя сообщения Importance Важность сообщения (0, 1, 2) Mail. Format устанавливает кодировку для объекта New. Mail: 0 - объект принадлежит MIME формату; 1 - объект является обычным текстом.
Объект New. Mail Методы объекта Send(адрес отправителя) Обеспечивает отправку сообщения через почтовый SMTP-сервер от учетной записи отправителя. По окончании работы метода Send() объект New. Mail становится недоступным, но не стирается из памяти. При необходимости, им можно присвоить значение null. Attach. File (путь/имя файла) Обеспечивает прикрепление вложения к письму
Пример отправки почты form. asp — содержит код формы, в которую вводятся данные;
Код ASP – библиотека CDONTS Сценарий, который извлекает данные из формы и преобразует их в формат электронного сообщения. <%@ Language=Java. Script %> <% mail_ob = Server. Create. Object("CDONTS. New. Mail"); mail_ob. Body = «Сообщение от: " +Request. Form("email") + " – " + Request. Form("name") + "nn" + Request. Form("message"); mail_ob. Subject = Request. Form("subject"); mail_ob. To = Request. Form("mail_to"); mail_ob. Importance = 1; // важность: // 0=низкая; 1=обычная; 2=высокая mail_ob. Send(“XXX”); // XXX – отправитель; %> <HTML><BODY><center> <h 3>Ваше сообщение отправлено!</h 3> </center> </BODY></HTML>
Другие средства: Asp. Email. dll - http: //www. aspemail. com/download. html Пример. <%@ Language=Java. Script %> <% var Object. Message = Server. Create. Object("Persits. Mail. Sender"); with (Object. Message) { Host = "…"; From. Name = "…"; Address("…"); Add. Custom. Header("Content-Type: text/html; charset=windows-1251"); Add. Custom. Header("Content-Transfer-Encoding: 8 bit"); Subject = "…"; Is. HTML = 1; Body = …; Send(); } Object. Message = null; %>
0893fd23d894252ae4617d134b772944.ppt