Foxtable(狐表)用户栏目专家坐堂 → login.htm登录,验证不正常


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

主题:login.htm登录,验证不正常

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


加好友 发短信
等级:七尾狐 帖子:1539 积分:10880 威望:0 精华:0 注册:2016/9/12 11:18:00
login.htm登录,验证不正常  发帖心情 Post By:2017/4/6 10:16:00 [只看该作者]

login.htm登录时
下面红色的可以正常验证,粉色的不能验证
Dim e As RequestEventArgs = args(0)                             '登录验证码
Select Case e.Path
    Case "getVimg.htm"
        If e.PostValues.Count > 0 Then
            'Dim wb As New weui
            Dim shoujh As String = e.PostValues("isj") '验证手机是否空值
            Dim dr As DataRow '定义输入的手机号,所在的行(以便于下面代码内查找此行)
            
            Dim mim As String = e.PostValues("imm") '验证手机是否空值
            Dim yanzm As String = e.PostValues("yzm") '验证手机是否空值
            Dim cookie_yzm As String = e.Cookies("yanzhengma") '从cookie中获取验证码
            
            Dim pattern As String = "^[1][345789][0-9]{9}$"  '手机验证用
            Dim txt = shoujh
            Dim rgx = new System.Text.RegularExpressions.Regex(pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase)
            If shoujh = "" Then
                msgbox("手机为空,getVimg.htm!")
                e.WriteString("手机不能为空!")
                'Return ""
            ElseIf rgx.isMatch(txt) = False Then '手机号验证不正确
                msgbox("手机:已经验证位数|字母等,getVimg.htm!")
                e.WriteString("请正确输入手机号码!")
                'Return ""
            ElseIf rgx.isMatch(txt) = True Then '手机号验证正确,查找有没有这个用户
                dr = DataTables("会员资料").sqlFind("手机 = '" & shoujh & "'")
                'msgbox("行,已经找了!")
                If dr Is Nothing Then '如果没有这个手机号
                    e.WriteString("您尚未注册,花2分钟注册,就可以免费参与哦!")
                    'Return ""
                End If
            ElseIf mim = "" Then
                e.WriteString("密码不能为空!")
                'Return ""
            ElseIf mim <> "" AndAlso mim.Length < 6 Then
                e.WriteString("请正确输入密码!")
                'Return ""
            ElseIf mim <> "" AndAlso mim.Length > 12 Then
                e.WriteString("请正确输入密码!")
                'Return ""
            ElseIf yanzm = "" Then
                e.WriteString("验证码不能为空!")
                'Return ""
            ElseIf yanzm <> cookie_yzm  Then
                e.WriteString("请正确输入验证码!")
                'Return ""
            Else
                e.WriteString("OK")
            End If
            'wb.InsertHTML("<meta http-equiv='Refresh' c>") '那么直接跳转到登录页面
            'e.WriteString(wb.Build)
        ElseIf e.GetValues.ContainsKey("rand")
***生成验证码
End Select


[此贴子已经被作者于2017/4/6 15:30:05编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/6 10:41:00 [只看该作者]

每个判断都要用If Then End If,每个都单独写,加上return 代码。

 

不能像你那样设计。你没有处理如果找到行之后的情况

 

          ElseIf rgx.isMatch(txt) = True Then '手机号验证正确,查找有没有这个用户

                dr = DataTables("会员资料").sqlFind("手机 = '" & shoujh & "'")
                msgbox("行,已经找了!")
                If dr Is Nothing Then '如果没有这个手机号
                    e.WriteString("您尚未注册,花2分钟注册,就可以免费参与哦!")
                    'Return ""
               End If

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


加好友 发短信
等级:七尾狐 帖子:1539 积分:10880 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2017/4/6 11:18:00 [只看该作者]

按2楼,将1楼代码下述粉色部分改了,验证全部成功

另一个问题:
验证成功后,在httprequest事件验证,当 Verified = False AndAlso e.Path <> "login.htm" 时,代码设置跳转到=/login.htm,
执行后,浏览器里面显示http://127.0.0.1/login.htm,但是页面是空白的,手动刷新一次才进入/login.htm,这是怎么回事?

Dim e As RequestEventArgs = args(0)                             '登录验证码
Select Case e.Path
    Case "getVimg.htm"
        If e.PostValues.Count > 0 Then
            'Dim wb As New weui
            Dim shoujh As String = e.PostValues("isj") '验证手机是否空值
            Dim dr As DataRow '定义输入的手机号,所在的行(以便于下面代码内查找此行)
            
            Dim mim As String = e.PostValues("imm") '验证手机是否空值
            Dim yanzm As String = e.PostValues("yzm") '验证手机是否空值
            Dim cookie_yzm As String = e.Cookies("yanzhengma") '从cookie中获取验证码
            
            Dim pattern As String = "^[1][345789][0-9]{9}$"  '手机验证用
            Dim txt = shoujh
            Dim rgx = new System.Text.RegularExpressions.Regex(pattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase)

            If shoujh = "" Then
                'msgbox("手机为空,getVimg.htm!")
                e.WriteString("手机不能为空!")
                Return ""
            End If

            If rgx.isMatch(txt) = False Then '手机号验证不正确
                'msgbox("手机:已经验证位数|字母等,getVimg.htm!")
                e.WriteString("请正确输入手机号码!")
                Return ""
            End If

            If mim = "" Then
                e.WriteString("密码不能为空!")
                Return ""
            End If

            If mim <> "" AndAlso mim.Length < 6 Then
                e.WriteString("请正确输入密码!")
                Return ""
            End If

            If mim <> "" AndAlso mim.Length > 12 Then
                e.WriteString("请正确输入密码!")
                Return ""
            End If

            If yanzm = "" Then
                e.WriteString("验证码不能为空!")
                Return ""
            End If

            If yanzm <> cookie_yzm  Then
                e.WriteString("请正确输入验证码!")
                Return ""
            End If

                e.WriteString("OK")

        ElseIf e.GetValues.ContainsKey("rand")
***生成验证码代码
End Select
[此贴子已经被作者于2017/4/6 11:20:22编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/6 12:30:00 [只看该作者]

 没看懂如何操作。验证成功后,直接跳转到了 details.htm


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


加好友 发短信
等级:七尾狐 帖子:1539 积分:10880 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2017/4/6 12:34:00 [只看该作者]

我大概知道原因了

跳转代码在httprequest事件里,成功跳转很好,不成功,跳转到login.htm,有问题
    If Verified AndAlso e.Path = "login.htm"  Then '如果用户访问的是登录页,且身份验证成功
        msgbox(7)
        wb.AppendCookie("isj",UserName,30) '将用户名和密码写入cookie
        wb.AppendCookie("imm",Password,30)
        wb.InsertHTML("<meta http-equiv='Re-fresh' con-tent='0; url-=/details.htm'>") '直接跳转到首页
        e.WriteString(wb.Build) '生成网页
        Return '必须的
    ElseIf Verified = False AndAlso e.Path <> "login.htm" Then '这个时候,页面是login.htm,所以不会跳转,但是去掉e.Path <> "login.htm",又陷入死循环,怎么办?
        msgbox(8)
        wb.InsertHTML("<meta http-equiv='Re-fresh' con-tent='0; ur-l=/login.htm'>") '那么直接跳转到登录页面
        e.WriteString(wb.Build) '生成网页
        Return '必须的
    End If
[此贴子已经被作者于2017/4/6 13:35:54编辑过]

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/6 15:03:00 [只看该作者]

没看懂你如何操作的。如果验证不成功,在login里面,就不会跳转的啊。

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


加好友 发短信
等级:七尾狐 帖子:1539 积分:10880 威望:0 精华:0 注册:2016/9/12 11:18:00
  发帖心情 Post By:2017/4/6 15:29:00 [只看该作者]

getVimg.htm加了判断代码,如果账号密码不对,toptip显示错误,执行不到这里,所以,这个问题解决了

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2017/4/6 16:00:00 [只看该作者]

 原来的代码,你也可以加上判断

 

ElseIf Verified = False AndAlso e.Path = "login.htm"  Then

    '这个时候,执行内部函数login就好啦

End If


 回到顶部