登录站点

用户名

密码

网人系统整合UC后注册时Email总是报错的BUG修正

1已有 1736 次阅读  2011-03-03 10:41   标签Request  源代码  Email  email 
这个BUG在满足以下两个条件时触发:
1、你已经整合了UC
2、你在后台关闭了Email检查

BUG的表现是:不管你输入什么Email地址,都是报错:UC:email 格式有误

下面让我们来修复这个BUG:

打开:/Reg.asp

查看从138行到168行,源代码如下:
      Case "e"
        If Int(WR_User(9)) = 0 Then
          Email = WRMPS.CheckStr(Request("Email"),0)
            SQL = " Where WM_Email ='"&Email&"'"
            Set Rs = Conn.Execute("Select Top 1 WM_ID From WM_Member"&SQL)
            If Not Rs.Eof Then
              Response.write "<span style=""color:red;font-weight:bold"">邮箱不能重复注册</font>"
              Response.end
            End If
            Rs.CLose
          Set Rs = Nothing
        End If
        '----------新整合By Berin-----------
        If UC_Enable Then
          UC = uc_user_checkemail(Email)         
          If Int(UC) < 0 Then
            If UC="-4" Then
              UC="email 格式有误"
            ElseIf UC="-5" Then
              UC="email 不允许注册"
            ElseIf UC="-6" Then
              UC="该 email 已经被注册"
            End If
            Response.write "<span style=""color:red;font-weight:bold"">UC:"&UC&"</font>"
            Response.end
          End If
        End If
        '----------修改完毕-----------------
        Response.write "此邮箱可以注册"
    End Select

可以看到,UC部分的检查放在了后台EMAIL检查的判断语句外面,而对EMAIL的获取却放在判断的里面。
这样,当你后台设置不检查EMAIL时,这里就跳过了,也就是无法获取EMAIL地址,把一个空的EMAIL地址去UC检查,UC自然报错。知道了原因就很容易修改了,只要把UC的检查部分放到上述判断里面,这样如果后台设置不检查EMAIL,那么UC也不检查。

修改后如下:
      Case "e"
        If Int(WR_User(9)) = 0 Then
            Email = WRMPS.CheckStr(Request("Email"),0)
            SQL = " Where WM_Email ='"&Email&"'"
            Set Rs = Conn.Execute("Select Top 1 WM_ID From WM_Member"&SQL)
            If Not Rs.Eof Then
                Response.write "<span style=""color:red;font-weight:bold"">邮箱不能重复注册</font>"
                Response.end
            End If
            Rs.CLose
            Set Rs = Nothing
            '----------新整合By Berin-----------
            If UC_Enable Then
                UC = uc_user_checkemail(Email)
                If Int(UC) < 0 Then
                    If UC="-4" Then
                        UC="email 格式有误"
                    ElseIf UC="-5" Then
                        UC="email 不允许注册"
                    ElseIf UC="-6" Then
                        UC="该 email 已经被注册"
                    End If
                    Response.write "<span style=""color:red;font-weight:bold"">UC:"&UC&"</font>"
                    Response.end
                End If
            End If
            '----------修改完毕-----------------
            'Ebaba提示:
            '上面的整合UC检查需要放到整个判断里面,这样当系统设置不检查EMAIL时,就连UC也一块不检查了,否则这里会有BUG
        End If
        Response.write "此邮箱可以注册"
    End Select

==========搞定==========

100%原创,欢迎转载,转载请注明来自:易索论坛
分享 举报

发表评论 评论 (1 个评论)

涂鸦板