har varchar 长度 4 50 50 255 50 长度 4 50 长度 4 50 50 255 50 4 类型 Long Nvacha Nvarchar Nvarchar 长度 4 20 20 255 主键 YES 说明 唯一标识每条内容 用户名字 聊天日期 聊天内容 允许空 N0 NO NO YES 允许空 NO NO NO NO NO NO 主键 YES 说明 用户编号 留言所在帖子标题 用户名 存储留言内容 留言时的日期 允许空 NO NO NO Yes NO 允许空 NO NO 允许空 NO NO NO Yes NO 表 2-4 屏蔽字表 主键 YES 说明 用户编号 需要屏蔽的内容 表 4-5 问题表 主键 YES 说明 用户编号 简述问题 用户名 详述问题 提问日期 3.系统实现 3.1 导航栏 导航栏单独成文件,同时实现导航和登录的功能 登录前 输入用户名密码进行登录 (2)关键代码 表单提交 denglu.asp 处理 查询数据库核对用户密码,正确后在 session 中写入用户信息,并将 session(“nam”)同时作为 登录标识。 strl = "select * from 用户表 where 用户名='"&;nam&;"'" rs.open strl,conn,1,3 if not rs.eof then if rs("密码")=pwd then session("level")=rs("id") session("nam")=nam session("shenfen")=rs("身份") else session("level")="" end if 若身份为老师在公共首页将显示老师: if session("shenfen")="教师" then application("jiaoshi")=application("jiaoshi")+nam+"&;nbsp;" end if end if (3)登录后 利用 Session 显示的个人信息 5 利用 Application 显示在线的老师等登录状态等公共信息 Response.Write("目前在线用户 :" &;application("OnLine") &;"人, ") response.Write("在线教师:"&;application("jiaoshi")&;"&;nbsp;") 3.2 问题吧模块 3.2.1 查看所有问题 sqlstr= "select * from 问题表 order by 日期 desc " rs.Open sqlstr,Conn ,1,3 numrows=1 DO WHILE NOT RS.EOF AND NumRows<=RS.PageSize response.write("
"&;rs("问题")&;"&;nbsp;&;nbsp;") response.Write("提问者:"&;rs("用户名")&;"&;nbsp;&;nbsp;") response.Write("提问时间:"&;rs("日期")&;" ") RS.MoveNext NumRows=NumRows+1 LOOP rs.Close 3.2.3 进入帖子查看具体问题和所有留言 (1)查看问题,显示留言。按日期降序排序,使最新留言置顶 nonunderline href = 6 (3)关键代码 sqlstr= "select * from 留言表,用户表 where 留言表.用户名 = 用户表.用户名 and 帖子标题 ='"&;session("quest")&;"'order by 日期 desc" rs.Open sqlstr,Conn ,1,3 if not rs.eof then PageSize:设置每页所包含的记录个数。用于分页 rs.PageSize= 5 'session("pagesize") ' 设置每页的记录数 RS.AbsolutePage=Session("CurrentPage") Response.Write "
" numrows=1 DO WHILE NOT RS.EOF AND NumRows<=RS.PageSize response.Write("
") response.write("
"&;rs(" 用 户 名 ") &;"
") response.write("
"&;rs(" 日 期 ") &; "
") response.write("
"&;rs("email") &; "
") response.Write("
") response.write("
"&;rs("留言内容") &; "
") 7 RS.MoveNext NumRows=NumRows+1 LOOP 如下代码实现分页和翻页 <%' 计算当前页 IF Request.QueryString("MOVE")="后一页" THEN Session("CurrentPage")=Session("CurrentPage")+1 END IF IF Request.QueryString("MOVE")="前一页" THEN Session("CurrentPage")=Session("CurrentPage")-1 END IF IF Session("CurrentPage")="" THEN'第一次时是空的 Session("CurrentPage")=1 END IF %> <% IF Session("CurrentPage")>1 THEN %> [前一页] <% END IF %> <% IF Session("CurrentPage") [后一页] <% END IF '也就是说 current=0 或者空时,不显示下一页或者前一页 %> 3.2.4 页面底部设有留言界面,来添加留言。 (1)留言可以选择匿名或者用户名 当未登录时: 登录时可选择留言方式: 8 (2)关键代码 <%if session("nam")="" then%> 匿名留言 <%else%> 匿名留言&;nbsp; <%=session("nam") %> <%end if%> 提问将提交给 save_liuyan.asp 处理 3.3 提问模块,提问禁止匿名必须登录 (1) 提交后由 save_tiwen 处理,写入数据库并将 session( “quest” )以在问题吧里直接查看该问题。 sqlstr= "select * from 屏蔽字表 " rs.Open sqlstr,Conn ,1,3 do while not rs.eof wentimiaoshu = Replace (wentimiaoshu,rs("屏蔽字"),"***") wenti = Replace (wenti,rs("屏蔽字"),"***") rs.movenext loop rs.close '写库 strsql="select * from 问题表" rs.open strsql,conn,1,3 rs.addnew rs("问题")=wenti rs("问题描述")=wentimiaoshu rs("用户名")=session("nam") 9 rs("日期")=now() rs.update rs.close session("quest")=wenti%> 3.4 在线答疑 (1)首先由三个框架组成了上面的聊天室页面 Zaixiandayi.shuru (2)聊天室关键代码: Zaixiandayi_xianshi.asp 显示最新的十条聊天记录 且让最新的记录在页面最下边 <% 10 str = "select * from 聊天室 order by 日期 desc" rs.open str,conn,3,3 nu=1 do while not rs.