以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- HTTP用户身份验证 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=108429) |
-- 作者:tesia255 -- 发布时间:2017/10/23 1:01:00 -- HTTP用户身份验证 我用下面的代码,替换上面教学中的代码,页面总是加载中,哪里错误了呢? 教学代码:http://www.foxtable.com/mobilehelp/index.htm?page=0041.htm 我是想用现有的用户表,验证登录身份。是外部数据源 \'验证用户身份 If UserName = "张三" AndAlso Password = "888" Then Verified = True ElseIf Username = "李四" AndAlso Password="999" Then Verified = True End If ---------------------------------------------------------------------------------------------- Dim dr As DataRow dr = DataTables("Staff").Find("email =\'" & UserName & "\'") \'在职员表中找到邮箱为输入邮箱的 \'验证用户身份 If Password = dr("password") Then Verified = True End If [此贴子已经被作者于2017/10/23 1:02:36编辑过]
|
-- 作者:有点甜 -- 发布时间:2017/10/23 8:51:00 -- 代码改成
Dim dr As DataRow
dr = DataTables("Staff").Find("email =\'" & UserName & "\'") \'在职员表中找到邮箱为输入邮箱的
\'验证用户身份
If dr isnot Nothing AndAlso Password = dr("password") Then
Verified = True
End If
|
-- 作者:tesia255 -- 发布时间:2017/10/23 10:15:00 -- 教学代码中其他都没有改。
|
-- 作者:有点甜 -- 发布时间:2017/10/23 10:22:00 -- 1、直接复制粘贴帮助文档代码进去,是否有问题?
2、替换代码后,如果一直在登陆页,说明没有查找到表数据。核对你表数据和你输入的数据。 |
-- 作者:tesia255 -- 发布时间:2017/10/23 10:24:00 -- 教学源代码粘贴进去无问题,以下是我现在的代码,只有加粗部分是改了的,其他都是教学代码: Dim sb As New StringBuilder 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" AndAlso e.PostValues.ContainsKey("username") AndAlso e.PostValues.ContainsKey("password") Then UserName = e.PostValues("username") Password = e.PostValues("password") End If \'---------------------------------------------------------------------------------------------- Dim dr As DataRow dr = DataTables("Staff").Find("email =\'" & UserName & "\'") \'在职员表中找到邮箱为输入邮箱的 \'验证用户身份 If dr IsNot Nothing AndAlso Password = dr("password") Then Verified = True End If \'_____________________________________________________________________________ If Verified AndAlso e.Path = "logon.htm" Then \'如果用户访问的是登录页,且身份验证成功 e.Appendcookie("username",UserName) \'将用户名和密码写入cookie e.Appendcookie("Password",Password) e.WriteString("<meta http-equiv=\'Refresh\' c>") \'直接跳转到首页 Return \'必须的 ElseIf Verified = False AndAlso e.Path <> "logon.htm" Then \'如果用户身份验证失败,且访问的不是登录页面 e.WriteString("<meta http-equiv=\'Refresh\' c>") \'那么直接跳转到登录页面 Return \'必须的 End If \'_______________________________________________________________________________________ Select Case e.path Case "logon.htm" sb.AppendLine("<form action=\'logon.htm\' enctype=\'multipart/form-data\' method=\'post\' id=\'form1\' name=\'form1\'>") If e.PostValues.ContainsKey("username") AndAlso e.PostValues.ContainsKey("Password") Then \'判断是否是验证失败后的重新登录 sb.AppendLine("用户名或密码错误!</br></br>") sb.AppendLine("户名: <input name=\'username\' id=\'username\' value=\'" & UserName & "\'\'><br/><br/>") sb.AppendLine("密码: <input type=\'password\' name=\'password\' id=\'password\' value =\'" & Password & "\'><br/><br/>") Else sb.AppendLine("户名: <input name=\'username\' id=\'username\'><br/><br/>") sb.AppendLine("密码: <input type=\'password\' name=\'password\' id=\'password\'><br/><br/>") End If sb.AppendLine("<input type=\'submit\' name=\'sumbit\' id=\'sumbit\' value=\'登录\'>") sb.AppendLine("<input type=\'reset\' name=\'reset\' id=\'reset\' value=\'重置\'>") sb.AppendLine("</form>") e.WriteString(sb.ToString) Case "exit.htm" e.Appendcookie("username", "") \'清除cookie中原来的用户名和密码 e.Appendcookie("Password", "") e.WriteString("<meta http-equiv=\'refresh\' c>") \'跳转到登录页 Case "", "default.htm" sb.AppendLine("这是首页<br/><br/>") sb.AppendLine("<a href=\'order.htm\'>订购产品<a><br/>") sb.AppendLine("<a href=\'product.htm\'>产品列表<a><br/>") sb.AppendLine("<a href=\'exit.htm\'>退出登录<a><br/>") e.WriteString(sb.Tostring) Case "order.htm" e.WriteString("这是订购页") Case "product.htm" e.WriteString("这是产品页") End Select |
-- 作者:有点甜 -- 发布时间:2017/10/23 11:10:00 -- 1、数据表Staff没有找到对应的用户,或者你数据没有加载出来导致找不到;
2、如果找到了,那就是password不匹配。 |
-- 作者:tesia255 -- 发布时间:2017/10/23 11:20:00 -- 数据是都加载的,用户名和密码也是按照数据库中的填写的 ![]() 是因为外部数据源吗?
|
-- 作者:有点甜 -- 发布时间:2017/10/23 12:47:00 -- 加入msgbox,看弹出什么
Dim dr As DataRow
dr = DataTables("Staff").Find("email =\'" & UserName & "\'") \'在职员表中找到邮箱为输入邮箱的
\'验证用户身份
msgbox(dr is nothing) msgbox(username & " | " & password) if dr IsNot Nothing Then msgbox(username & " | " & password & " | " & dr("password")) end If If dr IsNot Nothing AndAlso Password = dr("password") Then Verified = True End If
|
-- 作者:tesia255 -- 发布时间:2017/10/23 22:10:00 -- 返回TRUE 返回 | 等于用户名密码返回的空
|
-- 作者:有点蓝 -- 发布时间:2017/10/23 22:15:00 -- 返回TRUE说明Staff没有这个提交上来的用户名的数据,注意find查询条件表达式的值是大小写敏感的 |