level 7
黑睿
楼主
这是一个简单的聊天室代码,只有一个文件,无聊的时候写的,发来给需要的asp爱好者参考,也欢迎大家继续该机增加更多的功能,方便的话也请把修改版本发我一份共同交流学习,写的不好高手莫要见笑。
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
'名称:asp简易聊天室
'作者:黑睿(原创)
'日期:2010/9/7
'说明:只实现了简单的聊天功能,可随意转载、修改使用
Option Explicit
dim rsAct : rsAct =Request("act")
Select Case rsAct
Case "send" : Call SendMessage()
Case "get" : Call GetMessage()
Case Else : Call ChatRoom()
End Select
Sub SendMessage()
dim rsMessage : rsMessage =Left(Request.Form("message"), 100)
If rsMessage ="" Then
Response.Write(vbescape("请输入要发送的聊天信息!"))
Response.End()
End If
rsMessage =Replace(rsMessage, "|", "")
rsMessage =Replace(rsMessage, vbcrlf, "")
rsMessage =Replace(rsMessage, "<", "<")
rsMessage =Replace(rsMessage, ">", ">")
rsMessage =Replace(rsMessage, """", """)
rsMessage =Replace(rsMessage, "'", "´")
Application.Lock()
dim nLast_Id : nLast_Id =Application("last_id")
If nLast_Id ="" or isNull(nLast_Id) Then nLast_Id =0
dim sNew_Message : sNew_Message =(nLast_Id +1) &"|聊友["& Session.SessionID &"]|"& rsMessage &"|"& Now()
If Application("message_list") <>"" Then Application("message_list") =vbcrlf & Application("message_list")
Application("message_list") =sNew_Message & Application("message_list")
Application("last_id") =nLast_Id +1
Application.UnLock()
Call GetMessage()
End Sub
Sub GetMessage()
Application.Lock()
dim sMessage_List : sMessage_List =Application("message_list")
dim nLast_Id : nLast_Id =Session("last_id")
If Application("last_id") ="" or isNull(Application("last_id")) Then Application("last_id") =1
If nLast_Id ="" or isNull(nLast_Id) Then
nLast_Id =Application("last_id")
Session("last_id") =nLast_Id
End If
If sMessage_List ="" Then Response.End()
sMessage_List =Split(sMessage_List, vbcrlf)
dim nTemp, sTemp
For nTemp =0 to ubound(sMessage_List)
If Clng(Split(sMessage_List(nTemp), "|")(0)) >Clng(nLast_Id) Then
If sTemp <>"" Then sTemp =vbcrlf & sTemp
sTemp =sMessage_List(nTemp) & sTemp
If nTemp =0 Then Session("last_id") =Split(sMessage_List(nTemp), "|")(0)
Else
Exit For
End If
Next
'输出获取到的信息
If sTemp <>"" Then Response.Write(vbescape(sTemp))
'清理5分钟前信息
sTemp =""
For nTemp =0 to ubound(sMessage_List)
If DateDiff("n", Split(sMessage_List(nTemp), "|")(3), Now) <10 Then
If sTemp <>"" Then sTemp =sTemp & vbcrlf
sTemp =sTemp & sMessage_List(nTemp)
End If
Next
Application("message_list") =sTemp
Application.UnLock()
End Sub
%>
<script language="javascript" runat="server">
function vbescape(psText){
return escape(psText);
}
</script>
<%
Sub ChatRoom()
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2010年09月08日 05点09分
1
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
'名称:asp简易聊天室
'作者:黑睿(原创)
'日期:2010/9/7
'说明:只实现了简单的聊天功能,可随意转载、修改使用
Option Explicit
dim rsAct : rsAct =Request("act")
Select Case rsAct
Case "send" : Call SendMessage()
Case "get" : Call GetMessage()
Case Else : Call ChatRoom()
End Select
Sub SendMessage()
dim rsMessage : rsMessage =Left(Request.Form("message"), 100)
If rsMessage ="" Then
Response.Write(vbescape("请输入要发送的聊天信息!"))
Response.End()
End If
rsMessage =Replace(rsMessage, "|", "")
rsMessage =Replace(rsMessage, vbcrlf, "")
rsMessage =Replace(rsMessage, "<", "<")
rsMessage =Replace(rsMessage, ">", ">")
rsMessage =Replace(rsMessage, """", """)
rsMessage =Replace(rsMessage, "'", "´")
Application.Lock()
dim nLast_Id : nLast_Id =Application("last_id")
If nLast_Id ="" or isNull(nLast_Id) Then nLast_Id =0
dim sNew_Message : sNew_Message =(nLast_Id +1) &"|聊友["& Session.SessionID &"]|"& rsMessage &"|"& Now()
If Application("message_list") <>"" Then Application("message_list") =vbcrlf & Application("message_list")
Application("message_list") =sNew_Message & Application("message_list")
Application("last_id") =nLast_Id +1
Application.UnLock()
Call GetMessage()
End Sub
Sub GetMessage()
Application.Lock()
dim sMessage_List : sMessage_List =Application("message_list")
dim nLast_Id : nLast_Id =Session("last_id")
If Application("last_id") ="" or isNull(Application("last_id")) Then Application("last_id") =1
If nLast_Id ="" or isNull(nLast_Id) Then
nLast_Id =Application("last_id")
Session("last_id") =nLast_Id
End If
If sMessage_List ="" Then Response.End()
sMessage_List =Split(sMessage_List, vbcrlf)
dim nTemp, sTemp
For nTemp =0 to ubound(sMessage_List)
If Clng(Split(sMessage_List(nTemp), "|")(0)) >Clng(nLast_Id) Then
If sTemp <>"" Then sTemp =vbcrlf & sTemp
sTemp =sMessage_List(nTemp) & sTemp
If nTemp =0 Then Session("last_id") =Split(sMessage_List(nTemp), "|")(0)
Else
Exit For
End If
Next
'输出获取到的信息
If sTemp <>"" Then Response.Write(vbescape(sTemp))
'清理5分钟前信息
sTemp =""
For nTemp =0 to ubound(sMessage_List)
If DateDiff("n", Split(sMessage_List(nTemp), "|")(3), Now) <10 Then
If sTemp <>"" Then sTemp =sTemp & vbcrlf
sTemp =sTemp & sMessage_List(nTemp)
End If
Next
Application("message_list") =sTemp
Application.UnLock()
End Sub
%>
<script language="javascript" runat="server">
function vbescape(psText){
return escape(psText);
}
</script>
<%
Sub ChatRoom()
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">