利用ASP开发网络聊天室
经 常 在Internet 上 冲 浪 的 网 友 恐 怕 很 少 有 人 没 有 去 过 聊 天 室 胡乱神聊。 你 只 要 稍 微 留 意 一 下 就会 发 现 这 些 聊 天 室 大 多 是 用CGI 程 序 或 者 用JAVA 开 发 的 Applet 维 护 的。 开 发 过 这 类CGI 或Applet 的 程 序 员 都 知 道, 这 种 开 发 工 作 是 费 时 费 力 的。 那 么 有 没 有 一 种 更 简 单、 省 力 的 开 发 方 式 呢 ? 答 案 是 肯 定 的。| <form
method="post" action="receivedata.asp">帐号: <input type="text" name="usname" >密 码: <input type="password" name="uspassword" > </center >< br >< br > < center > <input type="submit" value=" 进 入" > <input type="reset" value=" 重 填" > </center > <input type="hidden" name="content" value="" > </form> |
通 过 提 交 按 钮 来 激 发receivedata.asp。 该ASP
文 件 主 要 来 保 证 在 聊 天 室 里 没 有 两 个 用 户 是 同 帐号
的。 用 户 提 交 信 息 后, 该 文 件 打 开chat.mdb 检 查 是 否 已 经
有 该帐号, 如 果 有 但 密 码 不 对 就 提 醒 用 户 重 新 输 入 密
码, 如 果 没 有 那 么 用 户 就 顺 利 进 入 了 聊 天 室。 进 入 聊
天 室 界 面 的 功 能 由 下 列 语 句 完 成:
| <FRAMESET
ROWS="70%,30%" > <FRAME SRC="forum.asp" NAME="main" MARGINWIDTH="1" MARGINHEIGHT="1" Noresize > <FRAME SRC="frft.asp?kname= <% =name%>" NAME="footnotes" MARGINWIDTH="1" Noresize > </FRAMESET > |
注 意 这 里 有 一 个 技 巧, 通 过 参 数kname 将 用 户 的
帐号 隐 藏 在 客 户 的 浏 览 器 里 面 了, 这 样 一 来, 用 户 每
次 提 交 谈 话 内 容 的 同 时 也 把 他 的帐号提 交 了。
3、 文 本 输 入 区 的 设 计: 文 本 输 入 区 是 由frft.asp 产
生 的。 如 上 所 述, 用 户 每 次 提 交 谈 话 内 容 的 同 时 也 把
他 的 帐号 提 交 了, 用 户 提 交 谈 话 内 容 的 动 作 是 激 活forum.asp。
forum.asp 的 作 用 是 刷 新 聊 天 室 的 内 容。Frft.asp 内 容 如 下:
| <!DOCTYPE HTML PUBLIC " -//IETF//DTD
HTML//EN" > <html > <head > <meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80" > <meta name="GENERATOR" content="Microsoft FrontPage 2.0" > <title > </head > <body > <% kname=request.QueryString("kname")% > <base target="main" > <form name="fm1" method="POST" action="forum.asp"> <p align="center" ><input type="text" size="90" name="content" > <p align="center" ><input type="button" name="B1" value=" 提 交/ 刷 新" > <input type="reset" name="B2" value=" 重 写" >< /p > <input type="hidden" name="kname" value=< % =kname% >> </form > <SCRIPT LANGUAGE="VBScript" > <!-- Sub IeTimer1_Timer() if fm1.content.value="" then fm1.content.value="" fm1.submit end if end sub sub b1_onclick() fm1.submit fm1.content.value="" end sub --> </SCRIPT > <OBJECT ID="IeTimer1" WIDTH=39 HEIGHT=39 CLASSID="CLSID:59CCB4A0-727D- 11CF-AC36-00AA00A47DD2" CODEBASE="http://208.208.208.201/asp/ietimer.ocx" > <PARAM NAME="_ExtentX" VALUE="1005" > <PARAM NAME="_ExtentY" VALUE="1005" > <PARAM NAME="Interval" VALUE="7000" > </OBJECT > </body> </html > |
这 时 又 出 现 了 一 个 问 题, 用 户 必 须 不
停 提 交 才 能 看 到 最 新 的 聊 天 室 内 容, 这 显 然 给 用 户 带
来 了 不 便。 于 是 考 虑 用 一 个timer 的ActiveX 控 件 来 控 制 聊 天
室 的 内 容 岂 不 更 好 ? 于 是 选 用 了Ietimer, 如 上< object >
… …< /object > 所 引 用, 每 隔7 秒 钟 聊 天 室 内 容 自 动 更
新 一 次。 这 样 即 使 用 户 不 想 参 加 聊 天 也 可 以 坐 在 机 器
边 看 别 人 聊 天 了。
三、 总 结
由 上 述 开 发 过 程 我 们 可 以 知 道, 利 用ASP 程 序 可 以
很 灵 活 地 传 递 参 数, 并 且 可 以 很 灵 活 地 将 程 序 流 程 分
割 成 几 个 单 独 的ASP 程 序, 非 常 利 于 程 序 的 调 试, 对ActiveX
控 件 的 支 持 和 对DAO 的 强 大 操 作 能 力 使 得 利 用 ASP 能 够 开
发 功 能 非 常 强 大 的 程 序。