基于 ASP/SQL Server 的聊天程序






4.68/5 (19投票s)
2003 年 11 月 13 日
5分钟阅读

212323

7291
简单的 ASP/SQL Server 聊天应用程序
引言
这个聊天程序创建的原因很简单,就是我不想购买一个拥有我想要的所有功能的程序。这个应用程序当然不是一个完整的应用程序,但它处理了大多数通用的聊天功能。我甚至包含了一些其他应用程序没有的功能,比如表情符号、语言过滤器和房间邀请。
背景
由于我有一个使用 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
参数,您可以运行任意数量的并发实例。
祝您聊天愉快!
数据库
- 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
- 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
- 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
- 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
- chat_config
[domain_id] [int] NULL , [adm_uid] [varchar] (50)
这是应用程序中 ASP 文件列表
- admin_menu.asp
Admin Menu 是管理员使用的菜单屏幕。基本上是一个大厅,显示系统中所有的房间,无论是否是私有房间。此屏幕有几个选项。
- 创建新房间或系统房间。系统房间是持久性的,会一直保持活动状态,直到被实际移除。普通房间在最后一个人退出后会保持。
- 销毁房间。如果一个房间在有人在里面时被移除,他们会被送回大厅。
- 更改管理员用户名。
- 链接到另一个显示用户列表的屏幕(users_view.asp)。
- 链接到另一个设置会话选项的屏幕(chat_user_options.asp)。
- admin_view.asp
Admin View 是管理员的聊天窗口。与普通聊天窗口相同,但禁用了语言过滤器和日志记录。仍然使用 buttons.asp 和 banner.asp。
- banner.asp
Banner 用于显示房间名称、登出和返回大厅按钮。
- buttons.asp
Buttons 是用于输入消息的窗口。它包含一个 content-editable 的
DIV
标签和一个按钮。一些 JavaScript 用于控制格式化按钮以及对查询字符串进行过滤。 - chat_user_options.asp
此窗口基本上是一个 HTML 表单,用于收集和显示用户的会话选项。我没有将这些选项存储在数据库中,因为我也不存储任何用户配置文件。这可以进行修改和显著增强。
- chatroom.asp
这是横幅、聊天窗口和按钮的框架集。它包含几个脚本函数来检查会话状态和管理员状态。
- chatwindow.asp
这是实际的消息历史记录窗口。它只负责以格式化文本显示消息,以及替换表情符号和应用语言过滤器。它还会检查房间的有效性,以防在您在房间内时房间被删除。
- createroom.asp
这是实际执行数据库插入和房间验证的后端文件。它使用一个数组来构建邀请列表。如果房间已存在,它会自动在房间名后附加一个数字。我本可以与用户确认是否接受此新房间名称,但我选择直接创建。
- inframe.asp
此文件与 default.asp 相同。它可以作为包含文件集成到格式化的页面中。
- invite_inc.asp
这是一个包含文件,它会简单地运行检查以查看用户是否被邀请进入某个房间。它处理响应并根据邀请答案进行重定向。
- lobby.asp
大厅是您登录后看到的第一个地方。它列出了所有房间,并允许您创建一个新房间(newroom.asp)。
- login.asp
这仅仅是登录页面。
- loginuser.asp
这是用于验证登录或建议新登录的后端代码页面。它执行所有管理员验证,并在身份验证后设置会话变量。这可以进行增强,包括 SQL 验证甚至 Active Directory 验证。
- newroom.asp
此页面显示 HTML 表单,用于收集房间名称,并允许用户输入其他要邀请的屏幕名称。
- toggleroom.asp
这是一个简单的文件,用于设置一个会话变量,指示房间在大厅中已打开,以便查看登录的用户。
- updateuseroptions.asp
这是将用户选项保存到会话的后端代码文件。它会重定向到 chatroom.asp 或 lobby.asp。
- users_view.asp
这个管理员屏幕显示所有登录的用户,并提供踢出用户的选项。
- updateadminoption.asp
此文件仅更新数据库以更改域的管理员用户名。
- mod_main.asp
这是每个 ASP 页面中的全局包含文件。它包含
logintoroom
和logoutofroom
函数。它是我放置所有辅助函数的地方。它还包含 data_access.asp,这是全局数据连接模块。 - data_access.asp
这是我在所有应用程序中使用的模块。它包含使用 ADO 轻松连接到数据库的所有必要函数。我在 VB、ASP 甚至 Access 中都使用它。