ASP 用户登录脚本



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

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

没有为一个或多个必需参数提供值。

/

ghbet/login2.asp,第 11 行

登录1..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>

登录2..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:Inetpubwwwrootghbetghbet.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

请帮忙

获取"没有为一个或多个必需参数提供值"错误的可靠方法是询问不存在的字段(名称)。因此,请检查ghbet_users是否真的具有用户名和密码字段。

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

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

您的 If 子句接受登录尝试,如果"不是 rs。EOF" - 即查询是否返回一条或多条记录;应测试一条包含预期值的记录。

PASSWORD是一个保留的 Jet SQL 关键字(请参阅 Microsoft Jet 4.0 保留字列表)。尝试在查询中用方括号[]列名括起来:

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

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

我要做的第一件事是确保参数包含值,确保在发布表单时,它会传递"名称"和"密码"的值。

最新更新