ASP用户登录脚本

时间:2013-11-16 23:47:31

标签: asp-classic vbscript

当我尝试使用以下代码登录时,它会给我一个错误说

  

Microsoft JET数据库引擎错误“80040e10”。

     

没有给出一个或多个必需参数的值。

     

/ghbet/login2.asp,第11行

LOGIN1.ASP:

<html>
    <head>
    </head>
    <body>
        <table align=center>
            <tr>
                <td align=center>
                    <b> LOGIN </b>
                    <br>
                    <br>
                    <br>
                    <form action=login2.asp method=post>
                        UserName <input type=text name=uname /> <br>
                        Password <input type=password name=password /> <br><br>
                        <p align=right> <input type=submit value=LOGIN name=submit /> </p>
                </td>
            </tr>
        </table>
        </form>
    </body>
</html>

LOGIN2.ASP:

<%
    dim name, pass
    name=Request.form("uname")
    pass=Request.form("password")

    set conn=server.CreateObject("ADODB.connection")
    conn.ConnectionString="provider=Microsoft.jet.OLEDB.4.0;data source=C:\Inetpub\wwwroot\ghbet\ghbet.mdb"
    conn.Open
    set rs=Server.CreateObject("ADODB.recordset")
    query="select * from ghbet_users where username='" & name & "'and password='" & pass & "'"
    rs.Open query,conn

    if not rs.EOF  then 
        Response.Write " <h4> LOGIN SUCCESSFUL </h4>"
    else
        response.Write "<h4> USER NAME & PASSWORD NOT MATCHING </h4>"
    end if

%>vb

请帮助

3 个答案:

答案 0 :(得分:4)

确定获得一个或多个必需参数的值的确定方法。&#34;错误是要求不存在的字段(名称)s。因此,请检查ghbet_users是否确实包含用户名和密码字段。

正如Cheran所指出的那样,保留字可能会导致问题。由于没有人能够知道在下一版DBMS中将保留哪些单词,请在[]中包含所有名称。

您应该认真考虑使用参数查询来避免SQL攻击和数据类型/引用问题。

您的If子句接受登录尝试,如果&#34;不是rs.EOF&#34; - 即如果查询返回一个或更多记录;你应该测试一个包含预期值的记录。

答案 1 :(得分:2)

PASSWORD是一个保留的Jet SQL关键字(请参阅List of Microsoft Jet 4.0 reserved words)。尝试在查询中使用方括号[]围绕列名:

query="select * from ghbet_users where username='" & name& "'and [password]='" & pass & "'"

答案 2 :(得分:0)

看起来您分配给查询的字符串是此错误消息的根。确保在字符串中连接的变量之间提供空格。

我要做的第一件事是确保参数包含值,确保在发布表单时,它传递“name”和“password”的值。