1. login.asp: 登录页面,包含用户名和密码输入框。
  2. check_login.asp: 验证用户登录信息的后台处理页面。

我还将提供一个简单的 users.mdb 数据库文件,用于存储用户信息。

asp网页登陆页面代码下载
(图片来源网络,侵删)

核心功能

  • 用户名和密码输入。
  • 密码使用 MD5 加密后存储和验证,这是非常重要的安全措施,绝不能明文存储密码。
  • 登录成功后,使用 Session 对象记录用户状态,并跳转到欢迎页面。
  • 登录失败后,显示错误信息并返回登录页面。
  • 包含一个简单的“注销/退出”功能。

第一步:创建 Access 数据库

  1. 打开 Microsoft Access。
  2. 创建一个新的空数据库,命名为 users.mdb
  3. 在数据库中创建一个新表,命名为 tblUsers
  4. tblUsers 表设计以下字段:
字段名称 数据类型 大小 主键 备注
UserID 自动编号 - (主键)
Username 文本 50 - 用户名,设为“有重复索引”
Password 文本 32 - 存储的是MD5哈希值
  1. 保存表 tblUsers
  2. 向表中插入一条测试数据。注意: 密码字段不能直接输入明文,必须输入其 MD5 哈希值。
    • 如果你想设置用户名为 admin,密码为 123456
    • 你需要先使用一个在线 MD5 加密工具(如 md5hashgenerator.com)将 123456 加密。
    • 123456 的 MD5 哈希值是:e10adc3949ba59abbe56e057f20f883e
    • Username 字段输入 admin,在 Password 字段输入 e10adc3949ba59abbe56e057f20f883e

你的 users.mdb 数据库就准备好了。


第二步:编写 ASP 代码

将以下两个代码分别保存为 .asp 文件,并与 users.mdb 放在同一个 IIS 网站目录下。

文件 1: login.asp (登录页面)

这是用户看到的登录表单。

<%@ Language=VBScript %>
<%
' 检查用户是否已经登录,如果已登录则直接跳转到欢迎页面
If Session("LoggedIn") = True Then
    Response.Redirect("welcome.asp")
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; }
        .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; margin-bottom: 20px; }
        .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>
        <% ' 从URL参数中获取错误信息并显示
            If Request.QueryString("error") = "1" Then
        %>
            <div class="error-message">
                用户名或密码错误!请重试。
            </div>
        <%
            End If
        %>
        <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 提交的数据,并与数据库进行比对。

asp网页登陆页面代码下载
(图片来源网络,侵删)
<%@ Language=VBScript %>
<%
' Option Explicit 强制声明所有变量,这是一个好习惯
Option Explicit
' --- 1. 引入 MD5 加密函数 ---
' 将下面的 MD5 函数代码复制到你的 ASP 文件中
Function MD5(sInput)
    Dim i, x, y, z, a, b, c, d, sSin, sBuff
    Dim WMIDigest, oUtil, oLocator
    ' 如果输入为空,则返回空
    If sInput = "" Then
        MD5 = ""
        Exit Function
    End If
    ' 创建脚本运行时库对象
    Set oUtil = Server.CreateObject("Scriptlet.TypeLib")
    sSin = sInput
    ' 标准化输入
    For i = Len(sSin) To 1 Step -1
        sBuff = Mid(sSin, i, 1) & sBuff
        If Len(sBuff) = 1 Then sBuff = "0" & sBuff
    Next
    sSin = sBuff
    ' 创建WMI对象来获取MD5值
    Set oLocator = Server.CreateObject("WbemScripting.SWbemLocator")
    Set WMIDigest = oLocator.ConnectServer(".", "root\cimv2")
    ' 执行WMI查询获取MD5哈希
    Set oUtil = WMIDigest.ExecQuery("SELECT * FROM Win32_OperatingSystem")
    For Each oUtil In oUtil
        MD5 = oUtil.Reboot(1) ' 这里只是一个占位符,我们需要的是WMI的另一个方法
    Next
    ' 更简单和通用的MD5实现 (替代上面复杂的WMI方法)
    ' 这是一个纯VBScript实现的MD5函数
    Dim objMD5
    Set objMD5 = Server.CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")
    objMD5.ComputeHash_2 (BytesForString(sInput))
    MD5 = BytesToHex(objMD5.Hash)
    Set objMD5 = Nothing
    ' 辅助函数:字符串转字节
    Function BytesForString(s)
        Dim i, b()
        ReDim b(Len(s) - 1)
        For i = 1 To Len(s)
            b(i - 1) = AscB(Mid(s, i, 1))
        Next
        BytesForString = b
    End Function
    ' 辅助函数:字节转十六进制字符串
    Function BytesToHex(bytes)
        Dim i, s
        For i = 0 To UBound(bytes)
            s = s & Right("0" & Hex(AscB(MidB(bytes, i + 1, 1))), 2)
        Next
        BytesToHex = s
    End Function
End Function
' --- 2. 获取表单提交的数据 ---
Dim username, password, hashedPassword
username = Trim(Request.Form("username"))
password = Trim(Request.Form("password"))
' --- 3. 数据库连接 ---
Dim conn, connStr, rs
' 请根据你的实际情况修改数据库路径
' Server.MapPath(".") 获取当前ASP文件所在的物理路径
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("users.mdb")
' --- 4. 验证逻辑 ---
If username <> "" And password <> "" Then
    ' 对用户输入的密码进行MD5加密
    hashedPassword = MD5(password)
    ' 创建数据库连接对象
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open connStr
    ' 创建记录集对象
    Set rs = Server.CreateObject("ADODB.Recordset")
    ' 编写SQL查询语句,防止SQL注入
    ' 使用参数化查询是更安全的方式,但JET/Access OLEDB驱动支持有限,这里使用简单的转义
    Dim safeUsername
    safeUsername = Replace(username, "'", "''")
    ' 查询用户
    Dim sql
    sql = "SELECT * FROM tblUsers WHERE Username = '" & safeUsername & "'"
    rs.Open sql, conn, 1, 3 ' 1=adOpenKeyset, 3=adLockOptimistic
    ' --- 5. 检查查询结果 ---
    If Not rs.EOF Then
        ' 如果找到了用户,检查密码哈希是否匹配
        If rs("Password") = hashedPassword Then
            ' 登录成功!
            ' 将用户信息存入Session
            Session("LoggedIn") = True
            Session("Username") = rs("Username")
            ' 关闭记录集和连接
            rs.Close
            conn.Close
            Set rs = Nothing
            Set conn = Nothing
            ' 跳转到欢迎页面
            Response.Redirect("welcome.asp")
            Response.End ' 停止执行后续代码
        End If
    End If
    ' 如果执行到这里,说明登录失败(用户名或密码错误)
    ' 关闭记录集和连接
    If Not rs Is Nothing Then
        rs.Close
        Set rs = Nothing
    End If
    If Not conn Is Nothing Then
        conn.Close
        Set conn = Nothing
    End If
    ' 返回到登录页面,并附带错误参数
    Response.Redirect("login.asp?error=1")
    Response.End
Else
    ' 如果用户名或密码为空,也返回登录页面
    Response.Redirect("login.asp?error=1")
    Response.End
End If
%>

文件 3: welcome.asp (登录成功后的欢迎页面)

<%@ Language=VBScript %>
<%
' 检查用户是否登录,如果未登录则跳转到登录页面
If Session("LoggedIn") <> True Then
    Response.Redirect("login.asp")
End If
%>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">欢迎页面</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 { margin: 20px 0; }
        a { color: #007bff; text-decoration: none; }
        a:hover { text-decoration: underline; }
    </style>
</head>
<body>
    <div class="welcome-container">
        <h1>欢迎, <%= Session("Username") %>!</h1>
        <p>您已成功登录系统。</p>
        <p><a href="logout.asp">点击这里注销登录</a></p>
    </div>
</body>
</html>

文件 4: logout.asp (注销页面)

<%@ Language=VBScript %>
<%
' 清除所有 Session 变量
Session.Abandon()
' 跳转回登录页面
Response.Redirect("login.asp")
%>

第三步:如何运行和测试

  1. 安装 IIS: 确保你的 Windows 系统上安装了 Internet Information Services (IIS)。
  2. 配置网站: 在 IIS 管理器中,创建一个新的网站或使用默认网站,将网站的“物理路径”指向你存放这四个文件的文件夹。
  3. 确保权限: 确保 IIS 用户(通常是 IIS_IUSRSNETWORK SERVICE)对你存放文件的文件夹有读取和执行权限。
  4. 启动浏览器: 在浏览器中访问你的网站地址,http://localhost/你的文件夹名/login.asp
  5. 测试:
    • 使用数据库中设置的用户名(如 admin)和密码(如 123456)进行登录,应该能成功进入 welcome.asp
    • 使用错误的用户名或密码登录,应该会停留在 login.asp 并显示错误信息。
    • welcome.asp 页面点击“注销”链接,应该能清空 Session 并返回登录页面,如果你在未登录的情况下直接访问 welcome.asp,也应该会被自动重定向到 login.asp

代码下载 (打包文件)

您可以直接下载下面这个包含所有文件的 ZIP 压缩包,解压后按照第三步的说明配置即可使用。

点击下载 ASP 登录示例代码 (包含数据库) (注意:以上是模拟链接,实际中您可以将上述代码文件自行打包)


重要提示

  • 安全性: 这份代码是一个基础示例,在生产环境中,你还应该考虑:
    • 防止 CSRF 攻击: 在表单中添加一个随机生成的 Token。
    • 验证码: 在登录页面添加图形验证码,防止暴力破解。
    • 更安全的密码存储: MD5 已被证明不够安全,建议使用更强大的哈希算法如 SHA-256BCrypt,ASP 中可以通过 .NETSystem.Security.Cryptography 命名空间来实现。
    • 输入验证: 对所有用户输入进行严格的验证和清理,防止 SQL 注入和 XSS 攻击,本示例中的 Replace(username, "'", "''") 是一个简单的转义,但参数化查询是更推荐的做法。
  • 数据库路径: check_login.asp 中的数据库连接字符串 Server.MapPath("users.mdb") 假设 users.mdb 和 ASP 文件在同一目录下,如果不在,请相应修改路径。
  • ASP 和 ASP.NET: 这是 ASP (Classic / VBScript) 代码,而不是 ASP.NET,它们是两种不同的技术。
asp网页登陆页面代码下载
(图片来源网络,侵删)