以文本方式查看主题 - 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 |