65.9K
CodeProject 正在变化。 阅读更多。
Home

基于 ASP/SQL Server 的聊天程序

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.68/5 (19投票s)

2003 年 11 月 13 日

5分钟阅读

viewsIcon

212323

downloadIcon

7291

简单的 ASP/SQL Server 聊天应用程序

A sample chat window

引言

这个聊天程序创建的原因很简单,就是我不想购买一个拥有我想要的所有功能的程序。这个应用程序当然不是一个完整的应用程序,但它处理了大多数通用的聊天功能。我甚至包含了一些其他应用程序没有的功能,比如表情符号、语言过滤器和房间邀请。

背景

由于我有一个使用 domain_id 标识符的内容管理系统,我想为我的许多客户提供聊天程序,而无需为每个客户创建一个数据库。所以我添加了 domain_id 标识符,允许多个域使用它而不发生数据污染。您会看到几乎所有功能都将按此标识符进行过滤。

数据库是 SQL Server。我尝试过使用 Access 数据库,但在让 Access 支持单个 SQL 调用中的多个记录集时遇到了麻烦。与其详细描述数据库,不如提供一个可以生成 SQL 数据库的脚本。 data_access.asp 包含写入 SQL 脚本的用户名和密码。只要它们在两个地方都相同,就可以更改。我在集成这些时使用了一个单独的 config 文件。对于演示,我只是硬编码了它们。

使用代码

Install

代码只需复制到任何 ASP 虚拟目录即可。不需要 global.asa。提供了数据库脚本,只需在具有创建数据库权限的 SQL Server 上运行即可。

配置

在安装文件夹 include/data_access.asp 中,只需替换您的服务器信息设置即可。在我的应用程序中,这是一个应用程序变量。您可以根据自己的需要处理它。

Run

default.htm 是一个示例,展示了如何将聊天集成到任何页面中。会话用于跟踪用户信息等,但通过更改 domain_id 参数,您可以运行任意数量的并发实例。

祝您聊天愉快!

数据库

  1. chat_rooms
    [id] [int] IDENTITY (1, 1) NOT NULL ,
    [room_name] [varchar] (150),
    [system_room] [int] NULL ,
    [private] [int] NULL ,
    [private_owner] [int] NULL ,
    [last_login] [datetime] NULL ,
    [domain_id] [int] NULL
  2. chat_users
    [id] [int] IDENTITY (1, 1) NOT NULL ,
    [user_name] [varchar] (50,
    [room_id] [int] NULL ,
    [date_in] [datetime] NULL ,
    [date_out] [datetime] NULL ,
    [user_ip] [varchar] (50),
    [active_time] [datetime] NULL ,
    [room_time] [datetime] NULL ,
    [domain_id] [int] NULL
  3. chat_user_invite
    [user_name] [varchar] (150),
    [room_id] [int] NULL ,
    [room_name] [varchar] (150),
    [private_room] [int] NULL ,
    [from_user] [varchar] (150),
    [domain_id] [int] NULL
  4. chat_msg
    [id] [int] IDENTITY (1, 1) NOT NULL ,
    [room_id] [int] NOT NULL ,
    [msg_ln] [varchar] (8000),
    [date_posted] [datetime] NULL ,
    [sortby] [int] NULL ,
    [sysmsg] [int] NULL
  5. chat_config
    [domain_id] [int] NULL ,
    [adm_uid] [varchar] (50)

这是应用程序中 ASP 文件列表

  1. admin_menu.asp

    Admin Menu 是管理员使用的菜单屏幕。基本上是一个大厅,显示系统中所有的房间,无论是否是私有房间。此屏幕有几个选项。

    1. 创建新房间或系统房间。系统房间是持久性的,会一直保持活动状态,直到被实际移除。普通房间在最后一个人退出后会保持。
    2. 销毁房间。如果一个房间在有人在里面时被移除,他们会被送回大厅。
    3. 更改管理员用户名。
    4. 链接到另一个显示用户列表的屏幕(users_view.asp)。
    5. 链接到另一个设置会话选项的屏幕(chat_user_options.asp)。
  2. admin_view.asp

    Admin View 是管理员的聊天窗口。与普通聊天窗口相同,但禁用了语言过滤器和日志记录。仍然使用 buttons.aspbanner.asp

  3. banner.asp

    Banner 用于显示房间名称、登出和返回大厅按钮。

  4. buttons.asp

    Buttons 是用于输入消息的窗口。它包含一个 content-editable 的 DIV 标签和一个按钮。一些 JavaScript 用于控制格式化按钮以及对查询字符串进行过滤。

  5. chat_user_options.asp

    此窗口基本上是一个 HTML 表单,用于收集和显示用户的会话选项。我没有将这些选项存储在数据库中,因为我也不存储任何用户配置文件。这可以进行修改和显著增强。

  6. chatroom.asp

    这是横幅、聊天窗口和按钮的框架集。它包含几个脚本函数来检查会话状态和管理员状态。

  7. chatwindow.asp

    这是实际的消息历史记录窗口。它只负责以格式化文本显示消息,以及替换表情符号和应用语言过滤器。它还会检查房间的有效性,以防在您在房间内时房间被删除。

  8. createroom.asp

    这是实际执行数据库插入和房间验证的后端文件。它使用一个数组来构建邀请列表。如果房间已存在,它会自动在房间名后附加一个数字。我本可以与用户确认是否接受此新房间名称,但我选择直接创建。

  9. inframe.asp

    此文件与 default.asp 相同。它可以作为包含文件集成到格式化的页面中。

  10. invite_inc.asp

    这是一个包含文件,它会简单地运行检查以查看用户是否被邀请进入某个房间。它处理响应并根据邀请答案进行重定向。

  11. lobby.asp

    大厅是您登录后看到的第一个地方。它列出了所有房间,并允许您创建一个新房间(newroom.asp)。

  12. login.asp

    这仅仅是登录页面。

  13. loginuser.asp

    这是用于验证登录或建议新登录的后端代码页面。它执行所有管理员验证,并在身份验证后设置会话变量。这可以进行增强,包括 SQL 验证甚至 Active Directory 验证。

  14. newroom.asp

    此页面显示 HTML 表单,用于收集房间名称,并允许用户输入其他要邀请的屏幕名称。

  15. toggleroom.asp

    这是一个简单的文件,用于设置一个会话变量,指示房间在大厅中已打开,以便查看登录的用户。

  16. updateuseroptions.asp

    这是将用户选项保存到会话的后端代码文件。它会重定向到 chatroom.asplobby.asp

  17. users_view.asp

    这个管理员屏幕显示所有登录的用户,并提供踢出用户的选项。

  18. updateadminoption.asp

    此文件仅更新数据库以更改域的管理员用户名。

  19. mod_main.asp

    这是每个 ASP 页面中的全局包含文件。它包含 logintoroomlogoutofroom 函数。它是我放置所有辅助函数的地方。它还包含 data_access.asp,这是全局数据连接模块。

  20. data_access.asp

    这是我在所有应用程序中使用的模块。它包含使用 ADO 轻松连接到数据库的所有必要函数。我在 VB、ASP 甚至 Access 中都使用它。

© . All rights reserved.