聊天室建设详解三

接下来,我们开始对用户登陆与发言实例程序进行分析:chatadd1.asp

1、用户登陆

1Response.Buffer=true
2``` 指定缓存为真
``` if Request("name")="" then ``` 判断用户名是否为空,以判断用户是否在聊天界面 ``` addr=Request("REMOTE_ADDR") ``` 获得用户IP

用户登陆表单

请输入匿名: 密码:

性别:

``` =Request("a") ``` 返回的错误变量
1else
2``` 用户确在聊天界面中   
3  

B1=Request("B1")
If B1="发送" Then 开始判断用户名与密码

If Request("name")="" or Request("pass")="" Then 判断用户名与密码是否为空
a="名字或密码不能为空!<br/>" 如果为空,则定义此错误变量
Response.Redirect "chatadd1.asp?a=" &amp; a &amp; " " 错误一旦出现立即返回登陆界面
end if

Set Conn=Server.CreateObject("ADODB.Connection") 如果客户输入非空,则开始查询数据库
Connstr="DBQ="+server.mappath("chat.mdb")+";DRIVER={Microsoft Access Driver (*.mdb)};"
Conn.Open connstr
sql="SELECT * FROM 用户表 WHERE 姓名='" &amp; Request("name") &amp; "'" 查看数据库中是否存在这个用户
Set Rs=conn.Execute(sql)
If Rs.Bof OR Rs.Eof Then 如果数据库中还没有这个用户,则
sz = "'" &amp; Request("IP") &amp;_ 把该用户写入用户数据库
"', '"&amp; Request("name") &amp;_
"', '"&amp; Request("D4") &amp;_
"', '"&amp; Request("pass") &amp; "'"
into_db = "INSERT INTO 用户表 ( IP, 姓名, 性别, 密码 ) VALUES(" &amp;_ 写入用户数据库
sz &amp; ")"
conn.Execute(into_db)

Else 如果数据库中已经存在这个用户,则
If Request("pass")&lt;&gt;Rs("密码") Then 查看他的密码是否正确。
a="这个名字已经被别人使用,或者你输入的口令不对!<br/>" 如果密码错误则定义错误信息
Response.Redirect "chatadd1.asp?a=" &amp; a &amp; " " 立即返回登陆界面并返回此错误信息
end if
end if

time1=now 如果登陆表单没有任何错误,则开始成为在线用户并进入聊天
Set Conn=Server.CreateObject("ADODB.Connection")
Connstr="DBQ="+server.mappath("chat.mdb")+";DRIVER={Microsoft Access Driver (*.mdb)};"
Conn.Open connstr
sql="SELECT * FROM 在线用户表 WHERE 姓名='" &amp; Request("name") &amp; "'" 查看在线名单中是否存在这个用户
Set Rs=conn.Execute(sql)
If Rs.Bof OR Rs.Eof Then 如果在线名单中的确没有这个用户,则
sz = "'" &amp; Request("name") &amp;_ 在在线用户表中添加这个用户
"', '"&amp; Request("D4") &amp;_
"', '"&amp; time1 &amp; "'"
into_db = "INSERT INTO 在线用户表 ( 姓名, 性别, 登陆时间 ) VALUES(" &amp;_ 添加这个用户
sz &amp; ")"
conn.Execute(into_db)

name=Request("name")
sex=Request("D4")
ming="管理员宣布" 管理员开始宣布欢迎这位(先生/女士)的光临
sz="<font color="#FF0000" size="5"><strong>" &amp; "热烈欢迎" &amp; name &amp; sex &amp; "的光临"
into_db2 = "INSERT INTO 聊天表 ( 姓名,说话 ) VALUES('" &amp; ming &amp; "','" &amp; sz &amp; "')"
conn.Execute(into_db2)

end if

end if

1  
2  
32、用户发言   
4用户开始真正发言   

addr=Request("REMOTE_ADDR")

 1<form action="chatadd1.asp" method="POST"> 用户发言表单   
 2<p><input name="ip" type="hidden" value="```
 3=addr
 4```"/><p>
 5<p><input ```"="" name="name" name")="" type="hidden" value="```
 6=Request("/><p>
 7<p><input name="word" size="70" type="text"/><input name="B3" type="submit" value="发言"/><input name="B4" type="reset" value="复原"/>
 8<p>颜色:<select name="D1" size="1" style="color: rgb(0,0,128)">
 9<option value=" ">黑色</option> 颜色选择   
10<option value="#ff0000">红色</option>
11<option value="#008000">绿色</option>
12<option value="#0000FF">蓝色</option>
13<option value="#800080">紫色</option>
14<option value="#008080">青色</option>
15<option value="#800000">深红色</option>
16<option value="#00ff00">草绿色</option>
17<option value="#00ffff">海蓝色</option>
18</select>   
19  

Set Conn=Server.CreateObject("ADODB.Connection") 查询更新在线用户
Connstr="DBQ="+server.mappath("chat.mdb")+";DRIVER={Microsoft Access Driver (*.mdb)};"
Conn.Open connstr
sql="SELECT * FROM 在线用户表 "
Set Rs=conn.Execute(sql)

1  
2对象:<select name="D2" size="1" style="color: rgb(0,0,128)"> 从在线用户中选择说话对象   
3<option value="大家">大家</option>   

Do While not Rs.Eof 在线用户表单
if Rs("姓名")=Request("D2") then
s="selected" 这里的条件定义s是为了保持说话对象的不变性,
else 使用户不必每次都选择说话对象,你也可以对颜色
s="" 与表情如法炮制。
end if

1<option ```="" ```"="" value="```
2=Rs(" 姓名")=""&gt;```
3=Rs("姓名")
4```(```
5=Rs("性别")
6```)&lt;/option&gt;   

Rs.MoveNext
Loop

 1&lt;/select&gt;   
 2  
 3  
 4表情:&lt;select name="D3" size="1" style="color: rgb(0,0,128)"&gt; 表情选择   
 5&lt;option value="微笑着对"&gt;微笑&lt;/option&gt;
 6&lt;option value="大笑着对"&gt;大笑&lt;/option&gt;
 7&lt;option value="哭泣着对"&gt;哭泣&lt;/option&gt;
 8&lt;option value="害羞着对"&gt;害羞&lt;/option&gt;
 9&lt;option value="红着脸对"&gt;脸红&lt;/option&gt;
10&lt;option value="愤怒的对"&gt;愤怒&lt;/option&gt;
11&lt;option value="阴沉的对"&gt;阴沉&lt;/option&gt;
12&lt;option value="奸笑着对"&gt;奸笑&lt;/option&gt;
13&lt;/select&gt;   
14    &lt;input name="B5" type="submit" value="离开聊天室"/&gt;   
15   &lt;a href="admin.asp"&gt;管理员入口&lt;/a&gt;
16&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/form&gt;   
17  
18  

B3=Request("B3")
If B3="发言" Then 准备把用户发言写到聊天表中
Set Conn=Server.CreateObject("ADODB.Connection")
Connstr="DBQ="+server.mappath("chat.mdb")+";DRIVER={Microsoft Access Driver (*.mdb)};"
Conn.Open connstr

1  

word=Request("word")
if Request("word")="" then 如果什么都没写就发言,则默认发言为两眼开开,正在发呆
word="两眼开开,正在发呆....."
end if

1  

sz = "'" & Request("ip") &_ 把用户发言写到聊天表中
"', '"& Request("name") &_
"', '"& Request("D1") &_
"', '"& Request("D3") &_
"', '"& Request("D2") &_
"', '"& word & "'"
into_db = "INSERT INTO 聊天表 ( ip, 姓名, 颜色, 表情, 说话对象, 说话 ) VALUES(" &_
sz & ")"
conn.Execute(into_db)
conn.Close

end if

3、用户离开

B5=Request("B5")
If B5="离开聊天室" Then 如果用户选择离开聊天室则
Set Conn=Server.CreateObject("ADODB.Connection")
Connstr="DBQ="+server.mappath("chat.mdb")+";DRIVER={Microsoft Access Driver (*.mdb)};"
Conn.Open connstr 从在线名单中把他删除
sql5="delete * FROM 在线用户表 WHERE 姓名='" & Request("name") & "'"
conn.Execute(sql5)

name1=Request("name")
sex1=Request("D4")
ming1="管理员宣布" 管理员宣布此用户离开
sz1="" & name1 & sex1 & "有事先离开,欢迎再来"
into_db2 = "INSERT INTO 聊天表 ( 姓名,说话 ) VALUES('" & ming1 & "','" & sz1 & "')"
conn.Execute(into_db2)
conn.close
Response.Redirect "chat.asp"
end if

end if

1  
2把此文件存为chatadd1.asp&lt;/strong&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/body&gt;
Published At
Categories with Web编程
Tagged with
comments powered by Disqus