通常的聊天室所採用的程序,也就是Chat程序了,其基本結構原理是不會採用到數據庫的。那究竟採用什麼技術呢?我們知道ASP變量當中Session變量的作用是記錄單個用戶的信息,並且能跟踪用戶的行為;Application對象的作用則起的全局變量,可以實現站點多個用戶之間在頁面中共享信息的。
那可以想像,在針對當前聊天程序中,一個聊天成員即為一個Session變量,聊天成員之間的會話則當成Application變量進行共享顯示,以使各成員都能看見。
那下面就採用一很經典的實例程序,進行了解和分析。
1,chat.asp
<%If Request.ServerVariables("Request_Method")="GET" then%> <form method="post" action="chat.asp"> <input type="text" name="nick" value="your nick name"><p> <input type="submit" value="come in"><p> <input type="hidden" name="log" size="20" value="1"> </form> <%Response.End Else Response.clear dim talk If Request.Form("nick")<>"" then Session("nick")=Request.Form("nick") End if %> <form method="post" action="chat.asp" name=form1> <%=Session("nick")%>說話: <input type="text" name="talk" size="50"><br> <input type="submit" value="提交"> <input type="reset" value="取消"></p> </form> <a href="chat.asp">離開</a><br> <% If Request.Form("log")<>1 then If trim(Request.Form("talk"))="" then talk=Session("nick")&"不說一句話就想來敷衍大家" Else talk=trim(Request.Form("talk")) End If Application.lock Application("show")="來自"&Request.ServerVariables("remote_addr")& "的" &Session("nick")&"在"&time& "的時候說:" &talk& "<br>" &Application("show") Application.UnLock Response.Write Application("show") End if %> <%End if%> |
簡單解釋:
1,<%If Request.ServerVariables("Request_Method")="GET" then%>的作用就是判斷當前頁面接受的方式,如果為GET方式則會顯示“要求輸入暱稱”的表單頁。因為頁面的默然接受方式為GET,當在URL地址欄直接敲入時,也就是沒有任何信息的時候,就應該顯示要求“輸入暱稱”。
2,<input type="hidden" name="log" size="20" value="1">和下面的If Request.Form("log")<>1 then是有關聯的:顯然第一次輸入暱稱進入,同樣將log隱藏域發送。但作為第一次的進入是無任何語句發言的,所以判斷接受的log值不為1,亦即非首次登錄(表示已經登錄)時,執行內部相關聊天顯示程序。
3,trim(Request.Form("talk"))="",trim就是個函數了:刪去字符串前,後的空格。初此,還有rtrim():去掉字符串後的空格;ltrim():去掉字符串前的空格。