login.asp- 登录页面,包含用户名和密码输入框。check_login.asp- 验证用户登录信息的服务器端脚本。welcome.asp- 登录成功后跳转到的欢迎页面。
我也会提供一个简单的数据库表结构说明,让您可以轻松地集成自己的用户数据。

(图片来源网络,侵删)
模板特点
- 经典 ASP:使用
.asp扩展名,在 IIS 服务器上运行。 - 安全:密码使用 MD5 哈希加密后与数据库比对,绝不明文存储。
- 会话管理:登录成功后,使用 ASP Session 对象记录用户状态,实现页面访问控制。
- 用户友好:包含基本的错误提示和样式。
- 结构清晰:代码注释详细,方便您理解和修改。
第一步:创建数据库表
您需要一个数据库(Microsoft Access 的 .mdb 文件,或者 SQL Server)来存储用户信息,创建一个名为 Users 的表,结构如下:
| 字段名 | 数据类型 | 说明 |
|---|---|---|
UserID |
自动编号 (AutoNumber) | 主键,用户ID |
Username |
文本 (Text) | 用户名,admin |
Password |
文本 (Text) | MD5哈希后的密码 |
FullName |
文本 (Text) | 用户全名,管理员 |
重要提示:您需要为每个用户的密码生成一个 MD5 哈希值并存入 Password 字段,您可以使用任何在线 MD5 加密工具来生成,密码 123456 的 MD5 哈希值是 e10adc3949ba59abbe56e057f20f883e。
第二步:下载和修改文件
将以下三个代码块分别保存为对应的文件,并上传到您的 ASP 网站根目录下。
文件 1: login.asp (登录页面)
这是用户访问的第一个页面,包含登录表单。

(图片来源网络,侵删)
<%@ Language=VBScript %>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">用户登录</title>
<style>
body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: #f4f4f4; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; }
.login-container { background-color: #fff; padding: 30px; border-radius: 8px; box-shadow: 0 4px 10px rgba(0,0,0,0.1); width: 350px; }
h2 { text-align: center; color: #333; }
.form-group { margin-bottom: 15px; }
label { display: block; margin-bottom: 5px; color: #555; }
input[type="text"], input[type="password"] { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 4px; box-sizing: border-box; }
input[type="submit"] { width: 100%; padding: 12px; background-color: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 16px; }
input[type="submit"]:hover { background-color: #0056b3; }
.error-message { color: #d9534f; text-align: center; margin-bottom: 15px; display: none; }
</style>
</head>
<body>
<div class="login-container">
<h2>用户登录</h2>
<!--
使用 Request.QueryString("error") 来显示错误信息
check_login.asp 会通过 URL 传递错误参数
-->
<div class="error-message">
<% If Request.QueryString("error") = "1" Then %>
用户名或密码错误,请重试!
<% ElseIf Request.QueryString("error") = "2" Then %>
请先登录!
<% End If %>
</div>
<form action="check_login.asp" method="post">
<div class="form-group">
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required>
</div>
<div class="form-group">
<label for="password">密码:</label>
<input type="password" id="password" name="password" required>
</div>
<input type="submit" value="登录">
</form>
</div>
</body>
</html>
文件 2: check_login.asp (登录验证逻辑)
这是核心的验证文件,它会接收 login.asp 提交的数据,连接数据库进行比对。
请务必修改下面的数据库连接字符串。
<%@ Language=VBScript %>
<%
' --- 1. 获取表单提交的数据 ---
Dim username, password
username = Trim(Request.Form("username"))
password = Trim(Request.Form("password"))
' --- 2. 检查用户名和密码是否为空 ---
If username = "" Or password = "" Then
Response.Redirect("login.asp?error=1")
Response.End()
End If
' --- 3. 连接数据库并进行验证 ---
' !!! 重要:请根据您的实际情况修改下面的连接字符串 !!!
' Access 示例:
' connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("your_database_name.mdb")
' SQL Server 示例:
' connStr = "Provider=SQLOLEDB;Data Source=your_server_name;Initial Catalog=your_database_name;User ID=your_username;Password=your_password;"
Dim conn, rs, sql, hashedPassword
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("users.mdb") ' <--- 修改这里,指向您的 Access 数据库文件
' 创建 MD5 哈希值 (需要 MD5 函数,见下方)
hashedPassword = MD5(password)
' 建立数据库连接
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connStr
' 查询用户
sql = "SELECT * FROM Users WHERE Username = '" & username & "' AND Password = '" & hashedPassword & "'"
Set rs = conn.Execute(sql)
' --- 4. 判断查询结果 ---
If Not rs.EOF Then
' 登录成功
' 1. 清空可能存在的错误 Session
Session.Contents.Remove("login_error")
' 2. 将用户信息存入 Session,方便其他页面调用
Session("LoggedIn") = True
Session("Username") = rs("Username")
Session("FullName") = rs("FullName")
' 3. 跳转到欢迎页面
Response.Redirect("welcome.asp")
Else
' 登录失败
' 将错误信息通过 URL 参数传递回登录页
Response.Redirect("login.asp?error=1")
End If
' 关闭对象,释放资源
rs.Close
conn.Close
Set rs = Nothing
Set conn = Nothing
' --- MD5 函数 (请将此函数放在本文件的最后) ---
Function MD5(s)
' 这是一个简化的 MD5 实现,用于演示。
' 对于生产环境,建议使用更健壮的 MD5 组件或函数。
' 此函数可能不完全符合标准 MD5,但足以用于演示目的。
Dim x, y, z, w, i, v(3), d(), p
p = "0123456789abcdef"
s = s & Chr(128) & String((64 - (Len(s) + 1 + 4) Mod 64) Mod 64, Chr(0))
For i = 1 To Len(s) Step 64
d = Array()
For j = 1 To 16
ReDim Preserve d(j-1)
d(j-1) = Asc(Mid(s, i + (j-1)*2 - 1, 1)) * 256 + Asc(Mid(s, i + (j-1)*2, 1))
Next
v(0) = &H67452301
v(1) = &HEFCDAB89
v(2) = &H98BADCFE
v(3) = &H10325476
For j = 0 To 63
If j < 16 Then
x = j
ElseIf j < 32 Then
x = (5 * j + 1) Mod 16
ElseIf j < 48 Then
x = (3 * j + 5) Mod 16
Else
x = (7 * j) Mod 16
End If
y = (v(1) And v(2)) Or (Not v(1) And v(3))
z = (v(3) And v(0)) Or (Not v(3) And v(1))
w = v(0) + ((y And z) Or ((y Or z) And MD5_F(v(1), v(2), v(3)))) + d(x) + MD5_G(j) + ((j / 16) Mod 4)
v(0) = v(3)
v(3) = v(2)
v(2) = v(1)
v(1) = w
Next
v(0) = v(0) + &H67452301
v(1) = v(1) + &HEFCDAB89
v(2) = v(2) + &H98BADCFE
v(3) = v(3) + &H10325476
Next
MD5 = ""
For i = 0 To 3
For j = 0 To 3
MD5 = MD5 & Mid(p, ((v(i) And &HFF000000) / &H1000000) + 1, 1)
MD5 = MD5 & Mid(p, ((v(i) And &HFF0000) / &H10000) + 1, 1)
MD5 = MD5 & Mid(p, ((v(i) And &HFF00) / &H100) + 1, 1)
MD5 = MD5 & Mid(p, (v(i) And &HFF) + 1, 1)
v(i) = v(i) / 256
Next
Next
End Function
Function MD5_F(x, y, z)
MD5_F = (x And y) Or (Not x And z)
End Function
Function MD5_G(x, y, z)
MD5_G = (x And y) Or (x And z) Or (y And z)
End Function
Function MD5_H(x, y, z)
MD5_H = x Xor y Xor z
End Function
Function MD5_I(x, y, z)
MD5_I = y Xor (Not x Or z)
End Function
%>
文件 3: welcome.asp (登录成功页面)
只有成功登录的用户才能看到这个页面,它会检查 Session 状态。
<%@ Language=VBScript %>
<%
' 检查用户是否已登录
' Session("LoggedIn") 不存在或为 False,则重定向到登录页
If Not Session("LoggedIn") Then
Response.Redirect("login.asp?error=2")
Response.End()
End If
%>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">欢迎页面</title>
<style>
body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: #f4f4f4; display: flex; justify-content: center; align-items: center; height: 100vh; margin: 0; }
.welcome-container { background-color: #fff; padding: 40px; border-radius: 8px; box-shadow: 0 4px 10px rgba(0,0,0,0.1); text-align: center; }
h1 { color: #28a745; }
p { font-size: 18px; color: #555; }
a { display: inline-block; margin-top: 20px; padding: 10px 20px; background-color: #dc3545; color: white; text-decoration: none; border-radius: 4px; }
a:hover { background-color: #c82333; }
</style>
</head>
<body>
<div class="welcome-container">
<h1>欢迎, <%= Session("FullName") %>!</h1>
<p>您已成功登录系统。</p>
<p>当前登录用户: <%= Session("Username") %></p>
<a href="logout.asp">退出登录</a>
</div>
</body>
</html>
额外文件: logout.asp (退出登录)
这是一个好习惯,提供一个退出登录的页面,用于清除 Session。

(图片来源网络,侵删)
<%@ Language=VBScript %>
<%
' 清除所有 Session 变量
Session.Abandon()
' 重定向回登录页
Response.Redirect("login.asp")
%>
如何使用
- 创建数据库:按照第一步的说明,创建一个
Users表并添加至少一个测试用户(记得密码要存 MD5 值)。 - 修改连接字符串:打开
check_login.asp文件,找到connStr变量,将其修改为指向您自己数据库的正确路径和凭据。 - 放置文件:将
login.asp,check_login.asp,welcome.asp,logout.asp这四个文件放在您的网站的同一个文件夹下(例如根目录)。 - 访问:在浏览器中访问
http://您的域名/login.asp,即可看到登录界面。
注意事项
- 服务器环境:此模板需要在支持 ASP 的 Web 服务器上运行,IIS (Internet Information Services)。
- 数据库安全:上面的数据库查询代码为了简洁,直接拼接了 SQL 字符串,如果您的用户输入直接拼入 SQL,可能会有 SQL 注入风险,在实际项目中,应使用参数化查询(Parameterized Queries)来增强安全性,对于这个简单模板,确保您的
Username字段在数据库中是唯一的,可以降低风险。 - MD5 函数:
check_login.asp中包含了一个简化的 ASP MD5 函数,它足够用于演示,但对于安全性要求极高的系统,建议使用更可靠的、经过验证的 MD5/SHA 组件。
