【问题标题】:ElseIF statement in classic ASP (VBScript)经典 ASP (VBScript) 中的 ElseIF 语句
【发布时间】:2012-09-26 13:43:27
【问题描述】:

这可能很简单,但我对经典的 ASP 语法几乎没有任何经验。基本上我有登录声明。如下图:

<%if session("AccountID") = "0" or session("AccountID")=""  then%>
                    <%
                    If request.form("SmPress") = "Pressed" Then
                        dim SQLVerifyEmail
                        SQLVerifyEmail = "SELECT * FROM Users WHERE UserName= '"&killchars(request.form("UserName"))&"' and Password = '"&killchars(request.form("Password"))&"' AND Status = 'A' AND Deleted = 'no'  "
                        set RSVerifyEmail = MyConn.execute(SQLVerifyEmail)
                        If RSVerifyEmail.EOF Then

                            response.write ("<span class=loginerror>Incorrect login details.</span><br>")

                        Else
                            LastLogin2 = "UPDATE Users SET LastLogin = Convert(datetime,'"&now()&"',103) WHERE AccountID = '"&RSVerifyEmail("AccountID")&"' "
                            MyConn.execute(LastLogin2)
                            session("admin") = RSVerifyEmail("admin")
                            session("AccountID") = RSVerifyEmail("AccountID")
                            response.redirect "profile.asp"

                        End if
                    End if
                    %>

我想要做的就是拆分它,这样如果 session = admin 它将重定向到 profile.asp,但如果它等于帐户 ID,则重定向到 profile-user.asp。我尝试了以下方法,但出现了大量错误:

ElseIF
                            LastLogin2 = "UPDATE Users SET LastLogin = Convert(datetime,'"&now()&"',103) WHERE AccountID = '"&RSVerifyEmail("AccountID")&"' "
                            MyConn.execute(LastLogin2)
                            session("admin") = RSVerifyEmail("admin") Then
                            response.redirect "profile.asp"

                        Else
                        session("AccountID") = RSVerifyEmail("AccountID")
                        response.redirect "profile-user.asp"
                        End if
                    End if
                    %>

我哪里错了?

【问题讨论】:

  • 不值得一个完整的答案,但你错过了 ElseIf 的条件。之后你需要一些东西ElseIf something = somethingelse THEN

标签: asp-classic vbscript


【解决方案1】:

假设您仅在数据库中的管理员配置文件上设置 RSVerifyEmail("admin") = "True": 试试这个:

<% if session("AccountID") = "0" or session("AccountID") = ""  then %>
<%
If request.form("SmPress") = "Pressed" Then
    dim SQLVerifyEmail
        SQLVerifyEmail = "SELECT * FROM Users WHERE UserName= '"&killchars(request.form("UserName"))&"' and Password = '"&killchars(request.form("Password"))&"' AND Status = 'A' AND Deleted = 'no'  "

    set RSVerifyEmail = MyConn.execute(SQLVerifyEmail)
        If RSVerifyEmail.EOF Then
            response.write ("<span class=loginerror>Incorrect login details.</span><br>")
        Else
            LastLogin2 = "UPDATE Users SET LastLogin = Convert(datetime,'"&now()&"',103) WHERE AccountID = '"&RSVerifyEmail("AccountID")&"' "
            MyConn.execute(LastLogin2)

            ' // Set only for admin session only for admins
            IF RSVerifyEmail("admin") = "True" Then
                RedirectWho         = "admin"
                session("admin")    = RSVerifyEmail("admin")
            Else
                RedirectWho         = "user"
            End if
            session("AccountID")    =   RSVerifyEmail("AccountID")
        End if
    set RSVerifyEmail = Nothing

    ' // redirect the logged in user or admin
    If RedirectWho = "admin" Then
        response.redirect "profile.asp"
    ElseIf RedirectWho = "user" Then
        response.redirect "profile-user.asp"
    End if
End if
%>

【讨论】:

  • 它不会抛出错误,但它们似乎都重定向到 profile-user.asp。我是使用管理员帐户还是用户帐户登录。
  • 在 RSVerifyEmail("admin") 中设置了什么值?这是您数据库中的什么数据类型?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多