Чат на ASP: от простого к сложному. Часть
4
Автор: Олег Яцура
Чтобы не пропали труды предыдущей статьи даром, сразу займемся интеграцией
проделанного в уже работающий чат.
Первое, что необходимо, это сослаться на регистрационную форму со стартовой
страницы и обязательно добавить к полю имени поле пароля при входе. Дальше, как
многие уже догадались, нужно изменить родительский файл chat.asp. Чем мы сейчас
и займемся.
<%
Session("login")=request("userName")
'приняли значение пароля при входе
Session("Password")=request("userPassword")
if Session("dooropen")=0 then
'далее открываем базу данных с пользователями
'и ищем там требуемого пользователя
set DB=Server.CreateObject("ADODB.Connection")
DB.Open "users"
sqlQuery="SELECT * FROM users "
set rsQuery=DB.Execute(sqlQuery)
Do While Not rsQuery.EOF
if rsQuery("Login")=Session("login") Then
if rsQuery("Password")=Session("Password") then
'если совпадают введенные логин и
'пароль то разрешаем доступ
AcessLogin=1
'записываем в Session-переменные
'необходимые данные о пользователе
Session("color") = rsQuery("color")
Session("gender") =rsQuery("Gender")
end if
End If
rsQuery.MoveNext
Loop
rsQuery.Close
Session("Acess")=AcessLogin
if Session("Acess")<>0 then
Session("dooropen")=1
dim NewMess()
Redim NewMess(20)
messArray=Application("MessageArray")
NewUser=Application("UsersArray")
GUser = Application("GenderArray")
for i=0 to 19
NewMess(i+1) = messArray(i)
next
for i=0 to 49
if NewUser(i)="" then
NewUser(i)=Session("login")
GUser(i)=Session("gender")
i=99
end if
next
NewMess(0)=Session("Login") & "снова с нами..."
Application.Lock
Application("MessageArray")=NewMess
Application("UsersArray")=NewUser
Application("GenderArray")=GUser
Application.UnLock
else
Response.Write "в доступе отказано"
end if
end if
%>
Ну вот, теперь для того чтобы войти пользователь должен быть зарегистрированным
и вводить свои логин и пароль (в принципе, можете и оставить вход для так называемого
гвеста, т.е. незарегистрированного пользователя). Далее...
Раз уж мы предложили пользователю выбирать цвет его сообщений при регистрации,
то, наверное, стоит сделать так, чтобы его сообщения появлялись на экране именно
с этим цветом. Для этого нам стоит немного добавить в исходный код chatinput.asp.
<form method=post action=chatinput.asp
target=_self name=mForm>
<Select Name=Type>
<Option Value=Phrase>сказать</option>
<Option Value=Action>сделать</option>
</Select>
<input type=text size=39 maxlength=255 name=mess>
<input type=submit value=" Ok ">
</form>
<%
If (Request("mess") <>"" then
Messa = "<font color="&Session(color) &">"&
Session("Login") & ": " & Request("mess")&"</font>"
if Request("Type")="Action" then
Messa="<i>" & Messa & "</i>"
end if
dim NewMess()
Redim NewMess(20)
messArray=Application("MessageArray")
for i=0 to 19
NewMess(i+1) = messArray(i)
next
NewMess(0)= Messa
Application.Lock
Application("MessageArray")=NewMess
Application.UnLock
end if
%>
Всего лишь одна строчка, но сколько вострога :-))...
Теперь, я думаю, пора взяться и за chatuser.asp. Во-первых, стоит предусмотреть
возможность предосмотра информации о каждом пользователе остальными, а во-вторых,
неплохо было бы сделать некоторое различие по половому признаку, раз уж он у нас
есть в базе. Для этого предлагаю для начала каждому пользователю в списке рисовать
картинку в зависимости от его пола, которая в то же время будет ссылкой на информацию
об этом пользователе (не мудурствуя лукаво - <img src="man.jpg"> и <img
src="woman.jpg">).
<html>
<meta http-equiv="Refresh" content="45">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1251">
<body>
<table cellpadding=5 cellspacing=5 border=0>
<%
User=Application("UsersArray")
Gender=Application("GenderArray")
for i=0 to 49
if User(i)<>"" then
if Gender(i)='Female' then
image='woman.jpg'
else
image='man.jpg'
end if
Response.write "<tr><td>"&User(i) & "</td>"
Response.write "<td>"& "<a
href=infouser.asp?user=<%=User(i)%>& target=_new>
<img src=<%=image%> border=0></a>"
&"</td></tr>"
end if
next
%>
</body>
</html>
Для того что бы и новый chat.asp и новый chatuser.asp были работоспособными,
конечно же нужно добавить в global.asa объявление новoго общедоступного массива
GenderUser:
dim GArray()
Redim GArray(50)
Application("GenderArray")=GArray
Теперь наш список пользователей дополнился картинками, несущими в себе информацию
о том, мальчик это или девочка (кстати, пользователь при регистрации может заполнить
и любой другой пол - так что можно ввести и третью картинку), а так же появилась
возможность посмотреть информацию об этих мальчиках и девочках. Или еще не появилась?
Действительно, не хватает файла infouser.asp. Если чего-то не хватает, то это
или нужно срочно найти или создать самому. Предлагаю второе:
<html>
<body>
<% user = request("user")
set DB=Server.CreateObject("ADODB.Connection")
DB.Open "users"
sqlQuery="SELECT * FROM users WHERE Login='"& user &"'""
set rsQuery=DB.Execute(sqlQuery)
login=rsQuery("Login")
gender= rsQuery("Gender")
color = rsQuery("color")
rsQuery.Close
%>
информация о пользователе:<br><br>
Имя: <%=login%><br>
Пол: <%=gender%><br>
Цвет: <font color=<%=color%>>
<%=color%> </font> <br>
</body>
</html>
Ну, пожалуй, на сегодня все...
Продолжение следует...
Информация взята с сайта www.relib.com