在 主 页 中 利 用ASP 技 术 实 现 用 户 口 令 的 验 证

---- 大 家 知 道 在 一 般 的WEB 站 点 中, 用 户 的 访 问 是 不 受 限 制 的, 即 可 以 访 问WEB 站 点 上 的 任 何 信 息, 且 访 问 信 息 的 次 序 是 不 受 限 制 的。 以http://www.xyz.com 为 例, 用 户 可 以 访 问http://www.xyz.com, 可 以 访 问http://www.xyz.com/custom.htm. 这 两 页 访 问 的 次 序 没 有 限 制, 即 可 以 先 访 问http://www.xyz.com/custom.htm, 也 可 以 先 访 问http://www.xyx.com. 这 种 灵 活 性 对 一 般 的 用 户 来 说 是 非 常 方 便 的, 但 是 对 于 某 些 特 定 的 应 用, 如 基 于WEB 的 电 子 邮 件 系 统( 如:http://www.hotmail.com), 基 于WEB 的 需 要 进 行 用 户 口 令 验 证 的intranet 系 统 等 必 须 限 制 用 户 的 访 问 信 息 的 次 序. 它 要 求 用 户 首 先 在 登 录 页 上 输 入 登 录 信 息, 然 后 根 据 用 户 名 动 态 生 成 相 应 的 主 页. 这 一 般 可 以 通 过 两 种 方 式 来 实 现 控 制. 一,CGI 方 式. 二,java applet 或 activex 等 前 端 方 式. 本 文 介 绍CGI 方 式 中 一 种 简 单 易 用 的ASP(Active Server Page) 方 式. 读 者 如 对ASP 不 熟 悉, 可 以 通 过 阅 读 以 下 程 序 得 到 一 个 初 步 的 印 象. 以 下 程 序 将 以 简 明 的 方 式 给 出 整 个 模 拟 系 统. 包 括 一 个SQL Server 数 据 库users

Username Password other
Char(10) Char(10) Char(50)

---- 及 如 下 主 页:global.asa( 设 置 全 局 变 量),check.asp( 用 于 校 验),homepage.htm( 登 录 页),homepage1.asp( 校 验 通 过 页, 用< !--#include FILE="includecheck.asp"-- > 方 式 包 括includecheck.asp).

---- global.asa 文 件 如 下:

< SCRIPT LANGUAGE=VBScript RUNAT=Server >
Sub Session_OnStart
	set session("OBJdbConnection")=Server.CreateObject("ADODB.Connection")
	session("OBJdbConnection").Open "DSN=feng2;UID=sa;PWD="
End Sub
Sub Session_OnEnd
	session("OBJdbConnection").close
End Sub
< /SCRIPT >

homepage.htm 文 件 如 下:
< html >
< head >
< meta NAME="GENERATOR" Content="Microsoft FrontPage 3.0" >
< meta HTTP-EQUIV="Content-Type" content="text/html; charset=gb_2312-80" >
< title >Document Title< /title >
< /head >
< body >
< p align="center" > 请 输 入 用 户 名 与 口 令:< /p >
< form method="POST" action="check.asp" name="checkform" >
  < div align="center" >
  < center >
  < p > 用 户 名:< input type="text" name="username" size="20" >< /p >
  < /center >
  < /div >
  < div align="center" >< center >
  < p > 口 令:  
  < input type="password"  name="password" size="20" >< /p >
  < /center >
  < /div >
  < div align="center" >< center >
  < p >< input type="submit" value=" 确 认" name="B1" >
  < input type="reset" value=" 重 置" name="B2" >< /p >
  < /center >< /div >
< /form >
< /body >
< /html >
check.asp 文 件 如 下: < %@ LANGUAGE="VBSCRIPT" % > < % session("username")=request.form("username") session("password")=request.form("password") if (session("username")="") then response.redirect "homepage.htm" end if SQLQuery="SELECT * FROM users WHERE username='"+session ("username")+"' and password='"+session("password")+"'" Set List=session("OBJdbConnection").Execute(SQLQuery) if (list.eof and list.bof) then session("username")="" session("password")="" response.redirect "homepage.htm" end if % > < HTML > < HEAD > < TITLE > 用 户 与 口 令 验 证 过 程< /TITLE > < /HEAD > < BODY > 你 已 通 过 用 户 与 口 令 验 证 < p >< a href="homepage1.asp" > 连 接 到 下 一 页!< /a >< /p > < /BODY > < /HTML >
homepage1.asp 文 件 如 下: < !--#INCLUDE FILE="includecheck.asp"-- > < html > < head > < title > 欢 迎 进 入 本 系 统< /title > < /head > < body > < p align="center" > 欢 迎 通 过 认 证 进 入 本 系 统 !< /p > < /body > < /html > includecheck.asp 文 件 如 下: < %@ LANGUAGE="VBSCRIPT" % > < % ' 判 断 有 没 有 先 访 问homepage.htm 后 按 确 定 按 钮 if isempty(session("username")) or isempty(session("password")) then response.redirect "homepage.htm" end if ' 判 断 有 没 有 顺 利 经 过 用 户 名 与 口 令 的 验 证 if session("username")="" then response.redirect "homepage.htm" end if % >

---- 读 者 可 以 如 下 测 试, 可 以 发 现 跳 过homepage.htm 而 访 问homepage1.asp 是 不 行 的.

---- 本 实 例 在 如 下 系 统 中 通 过: pentium 166 ,NT Server 4.0 中 文 版+Server Pack3.0+MS Sql Server6.5


中国计算机世界出版服务公司版权所有