以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  login.htm登录,验证不正常  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=98739)

--  作者:zhangjian222200
--  发布时间:2017/4/6 10:16:00
--  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 ""
            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编辑过]

--  作者:有点色
--  发布时间: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
--  发布时间: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编辑过]

--  作者:有点色
--  发布时间:2017/4/6 12:30:00
--  

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


--  作者:zhangjian222200
--  发布时间: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编辑过]

--  作者:有点色
--  发布时间:2017/4/6 15:03:00
--  
没看懂你如何操作的。如果验证不成功,在login里面,就不会跳转的啊。
--  作者:zhangjian222200
--  发布时间:2017/4/6 15:29:00
--  
getVimg.htm加了判断代码,如果账号密码不对,toptip显示错误,执行不到这里,所以,这个问题解决了
--  作者:有点色
--  发布时间:2017/4/6 16:00:00
--  

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

 

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

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

End If