Foxtable(狐表)用户栏目专家坐堂 → 手机端验证登陆的问题


  共有1819人关注过本帖树形打印复制链接

主题:手机端验证登陆的问题

帅哥哟,离线,有人找我吗?
rjh4078
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3355 积分:24732 威望:0 精华:0 注册:2012/3/26 21:47:00
手机端验证登陆的问题  发帖心情 Post By:2017/9/20 16:05:00 [显示全部帖子]

Dim zh As String = e.Cookies("zh") '从cookie中获取用户名
Dim bh As String = e.Cookies("bh")
Dim mm As String = e.Cookies("mm") '从cookie中获取用户密码
If e.Path = "logon.htm" '如果是通过登录页面访问,从PostValues即可中提取用户名和密码
    If e.PostValues.ContainsKey("bh") AndAlso e.PostValues.ContainsKey("mm")  Then
        bh = e.PostValues("bh")
        mm = e.PostValues("mm")
’Dim tr As DataRow=DataTables("人员表").sqlfind("编号='" & bh & "' and 启用=1 and 密码='" & EncryptText(mm,"e5","ff") & "'" )
‘’If tr IsNot Nothing Then
 ‘’   Verified  = True
  ‘’  zh=tr("姓名")
‘’End If

    End If
End If
Dim tr As DataRow=DataTables("人员表").sqlfind("编号='" & bh & "' and 启用=1 and 密码='" & EncryptText(mm,"e5","ff") & "'" )
If tr IsNot Nothing Then
    Verified  = True
    zh=tr("姓名")
End If

放到蓝色部分
提示:
.NET Framework 版本:2.0.50727.8794
Foxtable 版本:2017.8.19.1
错误所在事件:项目,HttpRequest
详细错误信息:
String 引用没有设置为 String 的实例。
参数名: s
用messbox弹了一下bh mm是空值
我把身份验证判断放到红色部分 无法验证跳转 但bh mm有数据


 回到顶部
帅哥哟,离线,有人找我吗?
rjh4078
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3355 积分:24732 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2017/9/20 16:59:00 [显示全部帖子]

现在的问题是 我把验证代码放到红色部分,能够验证 但是不能跳转default.htm 一直在登录页来回循环

 回到顶部
帅哥哟,离线,有人找我吗?
rjh4078
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3355 积分:24732 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2017/9/20 17:04:00 [显示全部帖子]

Dim zh As String = e.Cookies("zh") '从cookie中获取用户名
Dim bh As String = e.Cookies("bh")
Dim mm As String = e.Cookies("mm") '从cookie中获取用户密码
If e.Path = "logon.htm" '如果是通过登录页面访问,从PostValues即可中提取用户名和密码
    If e.PostValues.ContainsKey("bh") AndAlso e.PostValues.ContainsKey("mm")  Then
        bh = e.PostValues("bh")
        mm = e.PostValues("mm")
        '' MessageBox.show("编号='" & bh & "' and 启用=1 and 密码='" & EncryptText(mm,"e5","ff") & "'")
        Dim tr As DataRow=DataTables("人员表").sqlfind("编号='" & bh & "' and 启用=1 and 密码='" & EncryptText(mm,"a5","erp") & "'" )
        If tr IsNot Nothing Then

            Verified  = True
MessageBox.show("2")
            zh=tr("姓名")
        End If
        '
    End If
End If

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

先弹出2 再弹出1 有点搞不懂

 回到顶部
帅哥哟,离线,有人找我吗?
rjh4078
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3355 积分:24732 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2017/9/20 17:34:00 [显示全部帖子]

我就是按照帮助来做的 只是把相关控件名称和身份验证那部分代码做了修改
现在是先弹出2 然后弹出 false default.htm 

Dim Verified As Boolean '用于标记用户是否通过了身份验证
Dim zh As String = e.Cookies("zh") '从cookie中获取用户名
Dim bh As String = e.Cookies("bh")
Dim mm As String = e.Cookies("mm") '从cookie中获取用户密码
If e.Path = "logon.htm" '如果是通过登录页面访问,从PostValues即可中提取用户名和密码
    If e.PostValues.ContainsKey("bh") AndAlso e.PostValues.ContainsKey("mm")  Then
        bh = e.PostValues("bh")
        mm = e.PostValues("mm")                '
    End If
End If
If e.PostValues("bh")<>"" AndAlso e.PostValues("mm")<>"" Then
    Dim tr As DataRow=DataTables("人员表").sqlfind("编号='" & e.PostValues("bh") & "' and 启用=1 and 密码='" & EncryptText(e.PostValues("mm"),"a5","erp") & "'" )
    If tr IsNot Nothing Then
        Verified  = True
        zh=tr("姓名")
MessageBox.show("2")
    End If
End If


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

 回到顶部
帅哥哟,离线,有人找我吗?
rjh4078
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3355 积分:24732 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2017/9/20 18:27:00 [显示全部帖子]

可以了 真是神奇
如果读取到cookies把用户名自动填到用户名栏目怎么写?

 回到顶部
帅哥哟,离线,有人找我吗?
rjh4078
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3355 积分:24732 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2017/9/20 19:21:00 [显示全部帖子]

Dim Verified As Boolean '用于标记用户是否通过了身份验证
Dim zh As String = e.Cookies("zh") '从cookie中获取用户名
Dim bh As String = e.Cookies("bh")
Dim mm As String = e.Cookies("mm") '从cookie中获取用户密码
If e.Path = "logon.htm" '如果是通过登录页面访问,从PostValues即可中提取用户名和密码
    If e.PostValues.ContainsKey("bh") AndAlso e.PostValues.ContainsKey("mm")  Then
        bh = e.PostValues("bh")
        mm = e.PostValues("mm")                '
    End If
End If
MessageBox.show(mm)
If bh<>"" AndAlso mm<>"" Then
    Dim tr As DataRow=DataTables("人员表").sqlfind("编号='" & e.PostValues("bh") & "' and 启用=1 and 密码='" & mm & "'" )
    If tr IsNot Nothing Then
        Verified  = True
        zh=tr("姓名")
    End If
End If


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

我在将密码写入cookies的时候进行了加密  现在遇到一个问题 如果密码修改了 程序会一直以本地的密码来验证 怎么来改优先级呢

 回到顶部
帅哥哟,离线,有人找我吗?
rjh4078
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3355 积分:24732 威望:0 精华:0 注册:2012/3/26 21:47:00
  发帖心情 Post By:2017/9/21 13:57:00 [显示全部帖子]

是的 思路是这样 但是我现在对网页的事件触发逻辑没搞明白 不像表事件那么容易理解  经常绕晕
我的逻辑是 先将本地的用户名密码跟服务器比较 一样就过 不一样 需要重新输入一次
现在就是上面的代码 我不知道在哪个事件中来处理这个 
像点击提交按钮 这个事件是在什么时候触发呢  我在里面用message来弹 发现会弹出好几次 比如密码是A 第一次加密了A生成B 第二次又加密了B生成C 绕晕了

 回到顶部