ASP как зеркало информационной революции, или создай интерактивный сайт за полчаса

MoZ (real_moz@hotmail.com)

Спецвыпуск Xakep, номер #015, стр. 015-094-4

Файло раз

<!--

edit.asp

Самая сложная часть нашего чата. По сути совмещает в себе две страницы - логина и отправки сообщений.

При этом все формы сабмитятся на одну и ту же страницу, и она сама определяет необходимые действия

-->

<html>

<body>

<%

'Записываем в локальную переменную UserName значение из формы.

'Метод Server.HTMLEncode - небольшая страховка от мелких пакостей в виде скриптов, введенных в форме.

UserName = Server.HTMLEncode(Request.Form("UserName"))

if Session("UserName")="" And UserName = "" then

' Если имени пользователя нет в сессионной переменной, и оно не передано из формы

' - то отображаем форму для ввода имени пользователя.

%>

<form action="edit.html" method="post">Ваше имя: 

<input type="Text" name="UserName"> 

'Забацали поле для ввода.

<input type="Submit" value="Войти в чат">

'Сварганили кнопу "Войти в чат".

</form>

<%

else

if Session("UserName")="" then

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

Application.Lock

'Поскольку переменные приложения общие для всех пользователей, перед их изменением необходимо выполнить метод Lock. Таким образом, в один момент времени эти переменные может менять только один пользователь.

Application("UsersList") = Application("UsersList") & UserName & "<br>"

Application.Unlock 'Освобождаем переменные приложения.

Session("UserName") = UserName

'Для записи сессионных переменных никакие блокировки не нужны, поскольку эти переменные принадлежат только одному пользователю.

end if

'А теперь идет часть для отправки сообщений.

Message = Request.Form("message")

'Если мы получили поле message из формы - добавляем сообщение в чат.

if Message<>"" then

AllChat = Application("chat")

'Здесь у нас происходит удаление старых сообщений чата. Если общий размер чата превышает 3000 символов, то мы обрезаем его до ближайшего сообщения, которое мы находим по тегу <br>

if Len(AllChat)>3000 then

AllChat=left(AllChat,instr(3000,AllChat,"<br>")+3)

end if

'А вот и непосредственное добавление в нашу главную переменную сообщения с именем пользователя и временем.

Application.Lock

Application("chat") = "<i>" & Time &"</i> <b>" & Session("UserName") & "</b>: " & _

Server.HTMLEncode(Message) & "<br>" & AllChat

Application.Unlock

end if

'А теперь выводим обычную форму для отправки сообщений.

%>

<form action="edit.html" method="post">

Назад на стр. 015-094-3  Содержание  Вперед на стр. 015-094-5

загрузка...
Cпец Хакер #075Cпец Хакер #074Cпец Хакер #073Cпец Хакер #072Cпец Хакер #071Cпец Хакер #070Cпец Хакер #069Cпец Хакер #068Cпец Хакер #067Cпец Хакер #066Cпец Хакер #065Cпец Хакер #064Cпец Хакер #063Cпец Хакер #062Cпец Хакер #061Cпец Хакер #060Cпец Хакер #059Cпец Хакер #058Cпец Хакер #057Cпец Хакер #056Cпец Хакер #055Cпец Хакер #054Cпец Хакер #053Cпец Хакер #052Cпец Хакер #051Cпец Хакер #050Cпец Хакер #049Cпец Хакер #048Cпец Хакер #047Cпец Хакер #046Cпец Хакер #045Cпец Хакер #044Cпец Хакер #043Cпец Хакер #042Cпец Хакер #041Cпец Хакер #040Cпец Хакер #039Cпец Хакер #038Cпец Хакер #037Cпец Хакер #036Cпец Хакер #035Cпец Хакер #034Cпец Хакер #033Cпец Хакер #032Cпец Хакер #031Cпец Хакер #030Cпец Хакер #029Cпец Хакер #028Cпец Хакер #027Cпец Хакер #026Cпец Хакер #025Cпец Хакер #024Cпец Хакер #023Cпец Хакер #022Cпец Хакер #021Cпец Хакер #020Cпец Хакер #019Cпец Хакер #018Cпец Хакер #017Cпец Хакер #016Cпец Хакер #015Cпец Хакер #014Cпец Хакер #013Cпец Хакер #012Cпец Хакер #011Cпец Хакер #010Cпец Хакер #009Cпец Хакер #008Cпец Хакер #007Cпец Хакер #006Cпец Хакер #005Cпец Хакер #004Cпец Хакер #003Cпец Хакер #002Cпец Хакер #001