当前位置 博文首页 > ASP 连接Access数据库的登陆系统

    ASP 连接Access数据库的登陆系统

    作者:yongh701 时间:2021-08-27 18:59

    一、基本目标

    首先在Access数据库Database.mdb中存在着用户信息表test:


    编写一个登陆系统,如果用户输入的用户名在表中没有,则提示“查无此人”,如果输入密码错误,则提示“密码错误”


    如果用户输入的用户名与密码都正确,则跳转到登陆成功页


    登陆成功页在普通情况下,不允许通过输入网址就能访问


    二、基本思想

    使用asp的session对象确保了用户名与密码的传递。

    弹出部分使用了javascript的脚本语言,使用asp对用户信息表进行查询。

    站点的基本结构如下:


    三、制作过程
    整个站点使用utf-8码保证不会乱码,所以每一页在页头必须有<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />,如果使用DW的高版本则自动添加,低版本请把gb2312改成utf-8,记事本自便。 

    1、登陆页面login.html仅仅是一个表单的静态页面。关键是用post方法传递信息,Action是到login.asp

     <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>login</title>
    </head>
    
    <body>
    <form method="post" action="login.asp"> 
    username:<input type="text" name="username" />
    password:<input type="password" name="password" />
    <input type="submit" value="login" />
    </form>
    </body>
    </html>
    
    

     2、login.asp登陆验证页面是本系统最核心的页面

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>login</title>
    </head>
    
    <body>
    
    <%
    '向把login.html传过来的两个信息用变量保存起来
    username=Request.Form("username")
    password=Request.Form("password")
    '数据库是上一级目录的Database.mdb
    %>
    <%
    db="../Database.mdb"
    '连接数据库指定动作,这段必须独立地占用一个<%%>否则在某些情况下IE8会出错
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "driver={Microsoft Access Driver (*.mdb)};pwd=admin;dbq=" & Server.MapPath(db) 
    %>
    <%
    Set rs = Server.CreateObject( "ADODB.Recordset" )
    '看表中是否有此username
    sql = "select * from test where username='"+username+"';"
    rs.open sql,conn,1,3
    '如果什么都查不到,弹窗,弹回login.html
    if (rs.bof and rs.eof) then
    %>
    <script>
    alert("查无此人");
    window.location.href = "login.html";
    </script>
    <%
    '否则拿查出来的密码,与用户输入的密码作对比,看是否一致
    '查出来的密码必须先用一个变量接住,在ASP中不能直接比较
    else
    dbpwd=rs("password")
    '如果不一致,则弹窗,ASP没有!=,表示不等于请用<>
    if password<>dbpwd then
    %>
    <script>
    alert("密码错误");
    window.location.href = "login.html";
    </script>
    <%
    else
    '如果用户名密码都输入正确,则有此用户,timeout是为了防止用户非正常退出的,如果5分钟没有任何操作则判定其已经退出,ok是正常登陆的标志
    Session.Timeout=5
    Session("username")=username
    Session("login")="ok"
    %>
    <script>
    alert("登陆成功");
    window.location.href = "success.asp";
    </script>
    <%
    end if
    end if
    '用完数据库记得关
    rs.close
    set rs=nothing
    conn.close
    set conn=nothing
    %>
    </body>
    </html>
    
    

     3、success.asp
     没什么好说的,关键是看他是否有正常登陆标志,login的内容是否为ok,没有则将其弹出登陆页面 

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>欢迎登陆</title>
    </head>
    
    <body>
    <%
    if Session.Contents("login")<>"ok" then 
    %>
    <script>
    alert("请正常登陆!");
    window.location.href = "login.html";
    </script>
    <%
    else
    Response.Write("欢迎登陆,"+Session.Contents("username"))
    end if
    %>
    <a href="exit.asp">正常退出</a>
    </body>
    </html>
    
    

    4、exit.asp退出处理页面 

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>正在退出...</title>
    </head>
    
    <body>
    <%
    '所有session立即超时,并且移除所有session
    Session.Abandon
    Session.Contents.RemoveAll()
    %>
    <script>
    window.location.href = "login.html";
    </script>
    </body>
    </html>
    
    
    jsjbwy