以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  username password usergroup 三个字段值全部符合才能进入登录,但是当前却无任何提示 求解!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=135516)

--  作者:李孝春
--  发布时间:2019/5/28 16:09:00
--  username password usergroup 三个字段值全部符合才能进入登录,但是当前却无任何提示 求解!
运行报错
.NET Framework 版本:2.0.50727.8941
Foxtable 版本:2018.10.9.1
错误所在事件:项目,HttpRequest
详细错误信息:
未将对象引用设置到对象的实例。


代码如下:



Dim fl As String = "d:\\web\\" & e.path
If filesys.FileExists(fl)
    Dim idx As Integer = fl.LastIndexOf(".")
    Dim ext As String  = fl.SubString(idx)
    Select Case ext
        Case ".ico",".jpg",".gif",".png",".bmp",".wmf",".js",".css" ,".html",".htm",".zip",".rar"
            e.WriteFile(fl)
            Return \'这里必须返回
    End Select
End If

Dim wb As New weui
\'身份验证
Dim Verified As Boolean \'用于标记用户是否通过了身份验证
Dim UserName As String = e.Cookies("username") \'从cookie中获取用户名
Dim Password As String = e.Cookies("password") \'从cookie中获取用户密码
Dim usergroup As String = e.Cookies("usergroup")
If e.Path = "logon.htm" \'如果是通过登录页面访问,从PostValues即可中提取用户名和密码
    If e.PostValues.ContainsKey("username") AndAlso e.PostValues.ContainsKey("password")  AndAlso e.PostValues.ContainsKey("usergroup")  Then
        usergroup = e.PostValues("usergroup")
        UserName = e.PostValues("username")
        Password = e.PostValues("password")
    End If
End If

If UserName <>"" AndAlso Password <>"" AndAlso usergroup <>"" Then
    Dim dr11 As DataRow
    dr11 = DataTables("systemuser").SQLFind("username = \'" & username & "\'and usergroup = \'" & usergroup & "\'")
    If UserName = dr11("username") AndAlso Password = dr11("Password") AndAlso usergroup = dr11("usergroup") Then
        Verified  = True
    End If
End If


If Verified AndAlso e.Path = "logon.htm"  Then \'如果用户访问的是登录页,且身份验证成功
    wb.AppendCookie("username",UserName) \'将用户名和密码写入cookie
    wb.AppendCookie("password",Password)
    wb.AppendCookie("usergroup",usergroup)
    wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'直接跳转到首页
    e.WriteString(wb.Build) \'生成网页
    Return \'必须的
ElseIf Verified = False AndAlso e.Path <> "logon.htm" Then \'如果用户身份验证失败,且访问的不是登录页面
    wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'那么直接跳转到登录页面
    e.WriteString(wb.Build) \'生成网页
    Return \'必须的
End If

Select Case e.Path
    Case "logon.htm" \'登录页面
        
        wb.AddPageTitle("","pageheader","","")
        If e.PostValues.ContainsKey("username") AndAlso e.PostValues.ContainsKey("password") AndAlso e.PostValues.ContainsKey("usergroup")   Then \'判断是否是验证失败后的重新登录
            wb.AddTopTips("","toptip1","用户名或密码错误!").msec = 2000 \'如果用户通过登录按钮访问,则给用户一个2秒的提示.
        End If
        wb.AddForm("","form1","logon.htm")
        With wb.AddInputGroup("form1","ipg1")
            Dim filter11 As String = "表名 = \'干警信息\' and 列名 = \'所在单位\' and 停用 = false"
            Dim fdr11 As DataRow = DataTables("列项设置").Find(filter11)
            If fdr11 IsNot Nothing Then
                Dim abc11 As String=fdr11("下拉选项").replace(",", "|")
                .AddSelect("usergroup","所在单位","|"&abc11)
            End If
            .AddInput("username","户名","text")
            .AddInput("password","密码","password")
        End With
        With wb.AddButtonGroup("form1","btg1",True)
            .Add("btn1", "登录", "submit")
        End With
        With wb.AddPageFooter("","pf1","Copyright &copy; ")
            \'.AddLink("底部链接","http://www.foxtable.com")
        End With
        e.WriteString(wb.Build)
        
    Case "exit.htm" \'退出登录
        wb.DeleteCookie("username") \'清除cookie中原来的用户名和密码
        wb.DeleteCookie("password")
        wb.DeleteCookie("usergroup")
        wb.InsertHTML("<meta http-equiv=\'Refresh\' c>") \'那么直接跳转到登录页面
        
    Case "", "default.htm" \'首页
        wb.AddPageTitle("","pageheader","","")
        With wb.AddGrid("","g1")
            .Add("c1","增加干警信息", "./images/TableProperty.ico", "addnewtxl.htm")
            .Add("c2","增加管理人员", "./images/TableProperty.ico", "adduser.htm")
            .Add("c3","查询干警信息", "./images/TableProperty.ico", "filter.htm")
            .Add("c4","增加发布信息", "./images/TableProperty.ico", "AddNew.htm") \'.Attribute = ""
            .Add("c5","拟新增", "./images/TableProperty.ico", " ")
            .Add("c6","拟新增", "./images/TableProperty.ico", " ")
            .Add("c7","拟新增", "./images/TableProperty.ico", "")
            .Add("c8","拟新增", "./images/TableProperty.ico", "")
            .Add("c9","拟新增", "./images/TableProperty.ico", "")
            .Add("c10","拟新增", "./images/TableProperty.ico", "")
            .Add("c11","拟新增", "./images/TableProperty.ico", "")
            .Add("c12","退出", "./images/exit.ico", "exit.htm") \'退出登录
        End With
        With wb.AddPageFooter("","pf1","Copyright &copy; ")
            \'.AddLink("底部链接","http://www.foxtable.com")
        End With
        e.WriteString(wb.Build)

End Select
e.WriteString(wb.Build) \'生成网页
[此贴子已经被作者于2019/5/28 16:19:20编辑过]

--  作者:有点甜
--  发布时间:2019/5/28 16:20:00
--  

查找之后判断一下是否找到

 

    dr11 = DataTables("systemuser").SQLFind("username = \'" & username & "\'and usergroup = \'" & usergroup & "\'")
    If dr11 isNot Nothing AndAlso UserName = dr11("username") AndAlso Password = dr11("Password") AndAlso usergroup = dr11("usergroup") Then
        Verified  = True
    End If

--  作者:李孝春
--  发布时间:2019/5/30 12:43:00
--  回复:(有点甜)查找之后判断一下是否找到 ...
OK  谢谢!