以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  登录,数据库读取用户名和密码, 提示错误  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=99897)

--  作者:fubblyc
--  发布时间:2017/4/28 22:29:00
--  登录,数据库读取用户名和密码, 提示错误
帮助中的代码,我改成数据库读取用户名和密码,  提示错误:

图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20170428222414.png
图片点击可在新窗口打开查看


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

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELEC T name,password From {用户数据表}"
dt = cmd.ExecuteReader()

Dim dr As DataRow = dt.SQLFind("[Name] = \'" & UserName & "\'")

If Password = dr("Password") Then
    Verified  = True
Else
End If

If Verified AndAlso e.Path = "logon.htm"  Then \'如果用户访问的是登录页,且身份验证成功
    wb.AppendCookie("username",UserName) \'将用户名和密码写入cookie
    wb.AppendCookie("password",Password)
    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

--  作者:fubblyc
--  发布时间:2017/4/28 22:36:00
--  
知道原因了。

没有判断是否存在。。。

--  作者:有点蓝
--  发布时间:2017/4/28 22:38:00
--  
......
Dim dr As DataRow = dt.SQLFind("[Name] = \'" & UserName & "\'")
if dr isnot nothing then
If Password = dr("Password") Then
    Verified  = True
Else
End If
End If
......