<html>
<body bgcolor="#DF9FCF">
<% Response.Buffer=true %>
' 指定缓存为真
<% addr=Request("REMOTE_ADDR") %>
' 获取用户ip
<% if session("user")="" and request("name")="" then %>
'如果用户是第一次登录
<form method="POST" action="chatadd1.asp">
<p><input type="hidden" name="IP" value="<%=addr%>"><p>
<p>请输入用户名:<input type="text" name="name" size="15">
密码:<input type="password" name="pass" size="15">
性别:<selet name="D4" size="1" style="color:rgb(0,0,128)">
<option value="先生”>先生</option>
<option value="女士”>女士</option>
</select>
<input type="submit" value="登录" name="B1">
<input type="reset"
value="复原" name="B2">
</P>
</form>
<%=Request("a")%>
' 返回的错误变量
<%else %>
<%B1=Request("B1")%>
<%这个是我补的
If B1="登录" Then
' 开始判断用户名与密码
If Request("name")=""or Request("pass")="" Then
' 判断用户名与密码是否为空
a="名字或密码不能为空!<br>"
Response.Redirect "chatadd1.asp?a=" & a &" "
'错误一旦出现出现立即返回登陆界面
end if
'建立数据库连接
dim conn,dbpath
dim connstr
'数据库目录
dbpath="chat.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbpath)
conn.Open connstr
'查看在线数据库中是否存在这个用户
sql="SELECT * FROM 用户表 WHERE 姓名='" & Request("name") & "'"
Set Rs=conn.Execute(sql)
If Rs.Bof OR Rs.Eof Then' 如果在线数据库中存在这个用户名
a=" 用户名错误,请输入正确的用户名! "
Response.Redirect "chatadd1.asp?a=" & a &" "
Else
If Reuest("pass")<>Rs("密码") Then
a=" 用户正确,但你输入的口令不对!<br> "
Response.Redirect "chatadd1.asp?a=" & a &" "
end if
end if
session("user")=request("name")
sql6="select * from 在线用户表 WHERE 姓名='" & session("user") & "'"
conn.Execute(sql6)
Set rootRs=conn.Execute(sql6)
if not rootRs.Eof then
a="该用户已经在聊天室 请重新登录! <br>"
session("user")=""
Response.Redirect "chatadd1.asp?a=" & a &" "
End if
time1=now'如果登录表单没有任何错误,则开始成为在线用户并进入聊天
sql="SELECT * FROM 在线用户表 WHERE 姓名='" & session("user") & "'"
Set Rs=conn.Execute(sql)
' 如果在线用户表中的却没有这个用户,则在在线用户表中添加这个用户
If Rs.Bof OR Rs.Eof Then
sz = "'" & Request("name") & "','" & Request("D4") & "', '" & time1 & "'"
into_db = "INSERT INTO 在线用户表 ( 姓名 ,性别 ,登l陆时间 ) VALUES(" & sz &")"
conn.Execute( into_db)
name=session("user")
sex=Request("D4")
ming="管理员宣布"
' 管理员开始宣布欢迎这位 ( 先生 / 女士 ) 的光临
sz="<font size=5 color=#FF000><strong>" & "热烈欢迎" & name & sex & "的光临"
into_db2 = "INSERT INTO 聊天表 ( 姓名 ,说话 ) VALUES('" & ming &"','" & sz & "')"
conn.Execute( into_db2)
conn.close
end if
end if
%>
' 用户开始真正发言
<%addr=Request("REMOTE_ADDR")%>
' 获取客户端ip
<form method="POST" action="chatadd1.asp">
'定义表单的提交方法和处理表单的程序
<p><input type="hidden" name="IP" value="<%=addr%>"></p>
'将客户端的ip地址定义在隐藏域
<p><input type="hidden" name="name" value="<%=session("user")%>"><p>
<p><input type="text" name="word" size="70">
<input type="submit" value="发言" name="B3">
<input type="reset" value="复原" name="B4">
<P>颜色:
<selet name="D1" size="1" style="color: rgb(0,0,128)">
' 颜色选择
<option value=" ">黑色</option>
<option
value="#ff0000">红色</option>
<option
value="#008000">绿色</option>
<option
value="#0000ff">蓝色</option>
<option
value="#800080">紫色</option>
<option
value="#008080">青色</option>
<option
value="#800000">深红色</option>
<option
value="#00ff00">草绿色</option>
<option
value="#00ffff">海蓝色</option>
</select>
<%
dim conn,dbpath
dim connstr
'数据库目录
dbpath="chat.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbpath)
conn.Open connstr
sql=" SELECT *
FROM
在线用户表 "
Set Rs=conn.Execute(sql)
' 将查询结果返回到记录集Rs中
%>
' 在线用户表中选择说话对象
对象:<select name="D2" size="1" style="color: rgb(0,0,128)">
<option value="大家">大家</option>
<%
Do While not Rs.Eof
if Rs("姓名")=Request("D2") then
s="selected"
else
s=""
end if
%><option <%=s%> value="<%=Rs("姓名")%>"><%=Rs("姓名")%>(<%=Rs("性别")%>)</option><%
Rs.MoveNext
Loop
%>
</select>
表情:<select name="D3" size="1" style="color: rgb(0,0,128)">
<option
value="微笑着对">微笑</option>
<option
value="大笑着对">大笑</option>
<option
value="哭泣着对">哭泣</option>
<option
value="害羞着对">害羞</option>
<option
value="红着脸对">脸红</option>
<option
value="微笑着对">微笑</option>
<option
value="愤怒着对">愤怒</option>
<option
value="阴沉着对">阴沉</option>
<option
value="奸笑着对">奸笑</option>
</select>
<input type="submit" value="离开聊天室" name="B5">
</form>
<%
B3=Request("B3")
' 准备把用户发言写到聊天室中
If B3="发言" Then
dim conn,dbpath
dim connstr
'数据库目录
dbpath="chat.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbpath)
conn.Open connstr
%>
<%
word=Request("word")
if Reruest("word")="" then
word="两眼开开,正在发呆....."
' 如果什么都没写就发言,则默认发言为两眼开开,正在发呆
end if
%>
<%
sz = "'" & Request("ip") & "', '" & session("user") & "' , '" & Request("D1") & "' , '" & Request("D3") &_ "' , '" & Request("D2") & "' , '" & word & "'"
' 把用户发言写到聊天表中
into_db = "INSERT INTO 聊天表 (
ip , 姓名 , 颜色, 表情, 说话对象, 说话 ) VALUES(" & sz & ")"
conn.Execute( into_db)
conn.close
end if
' 如果用户选择离开聊天室则从在线名单中把他删除
B5=Request("B5")
If B5="离开聊天室" Then
dim conn,dbpath
dim connstr
'数据库目录
dbpath="chat.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(dbpath)
conn.Open connstr
sql5="DELETE * FROM 在线用户表 WHERE 姓名='" & session("user") & "'"
conn.Execute(sql5)
name1=session("user")
sex1=Request("D4")
ming1="管理员宣布"
' 管理员宣布此用户离开
sz1="<font size=5 color=#ff0000><strong>" & name1 & sex1 &
"有事先离开,欢迎再来"
into_db2 = "INSERT INTO 聊天表 ( 姓名 ,说话 ) VALUES('" & ming1 &"','" & sz1 & "')"
conn.Execute( into_db2)
conn.close
session("user")=""
' 当用户离开聊天室后释放该用户
Response.Redirect "chat.asp"
end if'这个end if对应的if判断在哪?
end if
%>
</body>
</html>
if xxx Then
xxx
End IF
语句之间要有缩进,有些错误就是发生在不注重格式的时候。