Чат на 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


© журнал принадлежит Web Creation
по всем вопросам обращаться А. Кузьмин