·建站首页 ·钻石 ·繁體
您的位置: 中国建站之家 -> 工具应用 -> Flash -> 设计聊天室

设计聊天室

作者:未知  来源:转载  发布时间:2005-8-10 21:09:06  发布人:acx


我们要建设一个聊天室,首先,这个聊天室的整体概况要在我们脑海中要有一个初步的影像,在众多的公共聊天室中,其核心无非是:
  1、聊天者把语句写入文本或数据库;
  2、浏览器不断的对文本或数据库进行刷新、读取;
  3、实时更新在线的客户;
  4、管理员对聊天者进行踢或IP禁止操作。   若是一个初学程式设计,你能够实现写数据库、自动刷新、获取客户IP的实验,那么,实际上建设聊天室也就完成了一大半。首先,要完成这几个实验,我们至少要熟悉一些ASP脚本及一些SQL命令。
  1、
<%IP=Request("REMOTE_ADDR")%>
   您的IP地址为:
   <%=IP%>
   这是一段获取客户IP的脚本,如果你看过《ASP教程》,你应该知道REMOTE_ADDR是
   一个服务器环境变量,返回发出请求的远程主机(client)的IP地址。
  2、
<%
   Set Conn=Server.CreateObject("ADODB.Connection")
   Connstr="DBQ="+server.mappath("chat.mdb")+";DRIVER={Microsoft Access     Driver (*.mdb)
};"    Conn.Open connstr
   sql="SELECT * FROM 在线用户表 WHERE 姓名=''''''''" & Request("name") & "''''''''"
   Set Rs=conn.Execute(sql)    If Rs.Bof OR Rs.Eof Then
    sz = "''''''''" & Request("name") &_
    "'''''''', ''''''''"& Request("D4") &_
    "'''''''', ''''''''"& time1 & "''''''''"
    into_db = "INSERT INTO 在线用户表 ( 姓名, 性别, 登陆时间 ) VALUES(" &_
    sz & ")"
    conn.Execute(into_db)
   end if
   %>
   这是一段十分常见的对数据库操作的脚本,其中包含了对数据库的条件查询与记录添加。上面此段程序我们分三部分来分析,如上以空格分隔的三个部分。
  要使用组件提供的对象,请创建对象的实例并将这个新的实例分配变量名。使用ASP的Server.
CreateObject方法可以创建对象的实例,使用脚本语言的变量分配指令可以为对象实例命名,如下例:
   Set Conn=Server.CreateObject("ADODB.Connection")
  这里的变量Conn 是ASP 程序创建的访问数据库的对象实例 。
  我们要访问数据库,首先要必须知道这个数据库在哪里,这个数据库的驱动程序是什么,要指定这两点有两种方法:第一是在服务器端手动创建数据库源名、指定数据库路径、指定数据库驱动程序,这个方法是通过服务器端的控制面版中的 ODBC 来设置的。她的优点是可以限定数据库的访问权限,增加数据库的安全性,缺点是数据库不易移植。
  再有一种方法是使用 ASP 来指定数据库路径及数据库驱动程序。不必手动对创建数据库源。在此例中,我们用的是第二种方法。
server.mappath("chat.mdb")指定数据库路径,DRIVER={Microsoft Access Driver
(*.mdb)};
指定数据库驱动程序,此例中我们使用的是MS ACCESS 数据库。
  SELECT是 SQL 查询命令。sql="SELECT * FROM 在线用户表 WHERE 姓名=''''''''" & Request("name") & "''''''''" 表示查询 数据库chat.mdb中的 在线用户表 中所有姓名等于Request("name")的人,Request("name")是读取表单中名为 NAME 的数据。
  Bof 是文件开头,Eof是文件结尾。If Rs.Bof OR Rs.Eof Then...语句往往用于判断数据库中是否存在符合条件的记录,如果为真则记录不存在,如果为假则记录存在。
  INSERT INTO是SQL中的插入命令,往往用于插入一条记录。
  上面此段程序,整体的意思就是:查询数据库在线用户表中是否存在用户Request("name"),如果不存在这个用户则把这个用户添加到在线用户表中。
  3、
<meta http-equiv="refresh" content="4">
   这是一条最简单的页面自动刷新脚本,她是HTML脚本,而不是ASP脚本。很简单吧,其意思是每4秒钟刷新一次,但在使用过程中,你会发现会出现有不少问题出现。接下来,我们开始讲述建设过程,首先,我们要规划,要大概了解使用多少个数据库表,这些数据库表应该有哪些字段;摆在我们面前的就已经是必须存在的几个数据库表:1、存储用户信息的用户表,2、存储发言信息的发言表,3、存储在线用户信息的在线用户表等。
  建议使用ACCESS或SQL SERVER 数据库,建立一个ACCESS数据库实在是太简单了,就象建立一个EXCEL表格差不多,你可以不必了解太多的数据库知识。
  我们先建立chat.mdb数据库包含用户表及聊天表:如下:
用户表:
ID IP 姓名 性别 密码
. . . . .
. . . . .
聊天表:
ID IP 姓名 颜色 表情 说话对象 说话
. . . . . . .
. . . . . . .
在线用户表:
ID 姓名 性别 登陆时间
. . . .
. . . .
数据库一旦建立,我们便可以开始着手编程,首先要考虑建立如下几个独立文件:1、登陆及发言区;2、刷新区;3、管理区。
  先来看登陆及发言区:这是聊天室的核心部分,请先看看流程:                         登陆<———————————|
             |             |
             |             |
       获取用户名、用户IP、密码       |
             |             |
             |             |
             |             |
             |        密码错误 |
|——————————查询用户表——————————|
| 密码正确         |
|             |
|            初|
|            次|
|            登|
|            陆|
|             |
|             |
|     把用户名、用户IP、及密码写入用户表
|             |
|             |
|————>把用户名、登陆时间写入在线用户表
             |
             |
|—————————-—>发言区
|             |
|             |
|            选|选
|            择|择
|            颜|说
|            色|话
|            与|的
|            表|对
|   

[1] [2] [3]  下一页

将本文收藏到QQ书签与更多好友分享