<% Dim m_strQuestion,m_strAnswerName If CheckLogin Then Response.Status = "301 Moved Permanently" Response.AddHeader "Location", "index.asp" Response.Flush:Response.End End If If LCase(Request("action")) = "reg" Then Call RegNewMember() If Founderr = True Then Call ToErrors(ErrMsg) End If Else Call Main() End If Call TPL_Flush() NewAsp.PageEnd() Sub Main() Dim strHTML strHTML = NewAsp.LoadTemplate("users\reg") strHTML = Replace(strHTML, "{$pagetitle}", TPL_Config(4)) strHTML = Replace(strHTML, "{$channelid}", 0) strHTML = Replace(strHTML, "{$classid}", 0) TPL_Scan strHTML End Sub Sub TPL_ParseNode(sTokenType, sTokenName, sVariant) Select Case sTokenType Case "newasp" ParseDataNode sTokenName,sVariant Case Else End Select End Sub Sub ParseDataNode(sToken,sVariant) On Error Resume Next Select Case sToken Case "question" : TPL_Echo m_strQuestion Case "answername" : TPL_Echo m_strAnswerName End Select If Err Then Err.Clear End Sub Sub TPL_ParseArea(sTokenName, sTemplate) Select Case sTokenName Case "action=0" : If Len(Request("action")&"")<3 Then TPL_Scan sTemplate Case "action=1" : If NewAsp.CheckStr(Request("action")) = "apply" Then TPL_Scan sTemplate Case "checkcode=1" : If CLng(NewAsp.MainSetting(22)) = 1 Then TPL_Scan sTemplate Case "checkask=1" If CLng(NewAsp.MainSetting(31)) = 1 And Len(NewAsp.MainSetting(32)) > 1 And Len(NewAsp.MainSetting(33)) > 0 Then If checkask=True Then TPL_Scan sTemplate End If End If End Select End Sub Function checkask() Dim Asklist,n Asklist=Split(NewAsp.MainSetting(32),",") If UBound(Asklist)>=0 And Trim(Asklist(0))<>"" Then Randomize() n = CInt(UBound(Asklist)*Rnd(now())) If n>UBound(Asklist) Then n=UBound(Asklist) m_strQuestion=Asklist(n) m_strAnswerName=md5(n,16) checkask=True Else checkask=False End If End Function Sub RegNewMember() Dim Rs,SQL Dim UserPassWord,strUserName,strGroupName,Password Dim rndnum,num1 Dim Question,Answer,usersex,sex On Error Resume Next If CLng(NewAsp.MainSetting(15))=0 Then ErrMsg = TPL_Config(8) FoundErr = True Exit Sub End If If NewAsp.CheckPost = False Then ErrMsg = ErrMsg + "
  • 您提交的数据不合法,请不要从外部提交注册。
  • " FoundErr = True End If If Trim(Request.Form("username")) = "" Then ErrMsg = ErrMsg + "
  • 登录账号不能为空!
  • " Founderr = True End If If NewAsp.IsValidStr(Request.Form("username")) = False Then ErrMsg = ErrMsg + "
  • 登录账号中含有非法字符!
  • " Founderr = True Else strUserName = NewAsp.CheckBadstr(Trim(Request.Form("username"))) End If If NewAsp.strLength(strUserName)CLng(NewAsp.MainSetting(28)) Then ErrMsg = ErrMsg + "
  • 用户名长度不能小于"&NewAsp.MainSetting(27)&"或大于"&NewAsp.MainSetting(28)&"
  • " Founderr = True End If If Not CheckUserNameString(strUserName) Then ErrMsg = ErrMsg + "
  • 您的用户中含有非法字符,禁止注册!
  • " Founderr = True End If If Trim(Request.Form("nickname")) = "" Then ErrMsg = ErrMsg + "
  • 用户昵称不能为空!
  • " Founderr = True End If If NewAsp.IsValidStr(Request.Form("nickname")) = False Then ErrMsg = ErrMsg + "
  • 用户昵称中含有非法字符!
  • " Founderr = True End If If NewAsp.IsValidStr(Request.Form("password1")) = False Then ErrMsg = ErrMsg + "
  • 密码中含有非法字符!
  • " Founderr = True End If If Trim(Request.Form("password1")) <> Trim(Request.Form("password2")) Then ErrMsg = ErrMsg + "
  • 您输入的密码和确认密码不一致!
  • " Founderr = True End If If IsValidEmail(Request.Form("usermail")) = False Then ErrMsg = ErrMsg + "
  • 您的Email有错误!
  • " Founderr = True End If If Not CheckEmailString(Request.Form("usermail")) Then ErrMsg = ErrMsg + "
  • 您的Email中含有非法字符,禁止使用!
  • " Founderr = True End If If Trim(Request.Form("usersex")) = "" Then ErrMsg = ErrMsg + "
  • 您的姓别不能为空!
  • " Founderr = True Else usersex = NewAsp.CheckBadstr(Request.Form("usersex")) End If If usersex = "女" Then sex = 0 Else sex = 1 End If If CLng(NewAsp.MainSetting(22)) = 1 Then If Not NewAsp.CodeIsTrue() Then ErrMsg = ErrMsg + "
  • 您输入的验证码和系统产生的不一致,请重新输入。
  • " Founderr = True End If End If If CLng(NewAsp.MainSetting(31)) = 1 And Len(NewAsp.MainSetting(32)) > 1 And Len(NewAsp.MainSetting(33)) > 0 Then Dim Asklist,n,Canreg Canreg=False Asklist=Split(NewAsp.MainSetting(33),",") For n=0 To UBound(Asklist) If Request.Form(md5(n,16))>"" Then If Trim(LCase(Request.Form(md5(n,16)))) <> Trim(LCase(Asklist(n))) Then ErrMsg = ErrMsg + "
  • 注册答案错误,请返回刷新页面后重新输入,或者联系管理员。
  • " Founderr = True Exit Sub Else Canreg=True End If Exit For End If Next If Not Canreg Then ErrMsg = ErrMsg + "
  • 注册答案不能为空,请返回刷新页面后重新输入,或者联系管理员。
  • " Founderr = True End If End If '判断同一IP注册间隔时间 If IsDate(Session("regtime")) Then If Not IsNull(Session("regtime")) Or CLng(NewAsp.MainSetting(29)) > 0 Then If DateDiff("s",Session("regtime"),Now()) < CLng(NewAsp.MainSetting(29)) Then ErrMsg = ErrMsg + "
  • 本站限制每次注册距离时间为"&NewAsp.MainSetting(29)&"秒,请稍后注册。
  • " Founderr = True Exit Sub End If End If End If Set Rs = NewAsp.Execute("SELECT username FROM NC_User WHERE username='" & strUserName & "'") If Not (Rs.BOF And Rs.EOF) Then FoundErr = True ErrMsg = ErrMsg + "
  • Sorry!此用户已经存在,请换一个用户名再试!
  • " Exit Sub End If Rs.Close:Set Rs = Nothing Set Rs = NewAsp.Execute("SELECT username FROM NC_Admin WHERE username='" & strUserName & "'") If Not (Rs.BOF And Rs.EOF) Then FoundErr = True ErrMsg = ErrMsg + "
  • Sorry!此用户已经存在,请换一个用户名再试!
  • " Exit Sub End If Rs.Close:Set Rs = Nothing If CLng(NewAsp.MainSetting(18)) = 1 Then Set Rs = NewAsp.Execute("SELECT userid FROM NC_User WHERE usermail='" & NewAsp.CheckStr(Request("usermail")) & "'") If Not Rs.EOF Then FoundErr = True ErrMsg = ErrMsg + "
  • 对不起!本系统已经限制一个邮箱只能注册一个账号。
  • 此邮箱["&Request("usermail")&"]已经占用,请您换一个邮箱再注册吧。
  • " End If Rs.Close:Set Rs = Nothing End If If CLng(NewAsp.MainSetting(17)) = 1 Then Randomize Do While Len(rndnum) < 8 num1 = CStr(Chr((57 - 48) * rnd + 48)) rndnum = rndnum & num1 loop UserPassWord = rndnum Else UserPassWord = Trim(Request.Form("password2")) End If Password = md5(UserPassWord,16) Question = Trim(Request.Form("question")) Answer = Trim(Request.Form("answer")) If Question = "" Then Question = NewAsp.GetRandomCode(16) If Answer = "" Then Answer = NewAsp.GetRandomCode(16) If Founderr = True Then Exit Sub '----------------------------------------------------------------- '系统整合 '----------------------------------------------------------------- Dim API_NewAsp,API_SaveCookie,SysKey If API_Enable Then Set API_Newasp = New API_Conformity API_NewAsp.NodeValue "action","reguser",0,False API_NewAsp.NodeValue "username",strUserName,1,False Md5OLD = 1 SysKey = Md5(API_NewAsp.XmlNode("username") & API_ConformKey,16) Md5OLD = 0 API_NewAsp.NodeValue "syskey",SysKey,0,False API_NewAsp.NodeValue "password",UserPassWord,0,False API_NewAsp.NodeValue "email",NewAsp.CheckStr(Request.Form("usermail")),1,False API_NewAsp.NodeValue "question",Question,1,False API_NewAsp.NodeValue "answer",Answer,1,False API_NewAsp.NodeValue "gender",sex,0,False API_NewAsp.SendHttpData If API_NewAsp.Status = "1" Then Founderr = True ErrMsg = ErrMsg & API_NewAsp.Message Exit Sub Else API_SaveCookie = API_NewAsp.SetCookie(SysKey,strUserName,Password,1) End If Set API_NewAsp = Nothing End If '----------------------------------------------------------------- If Founderr = True Then Exit Sub Set Rs = NewAsp.Execute("SELECT GroupName FROM NC_UserGroup WHERE Groupid=3") If Rs.BOF And Rs.EOF Then strGroupName = "普通会员" Else strGroupName = NewAsp.CheckBadstr(Rs(0)) If Len(strGroupName) = 0 Then strGroupName = "普通会员" End If Rs.Close:Set Rs = Nothing Set Rs = NewAsp.CreateAXObject("ADODB.Recordset") SQL = "SELECT * FROM NC_User WHERE (userid is null)" Rs.Open SQL,Conn,1,3 Rs.Addnew Rs("username") = strUserName Rs("password") = Password Rs("nickname") = NewAsp.CheckBadstr(Request.Form("nickname")) Rs("UserGrade") = 1 Rs("UserGroup") = strGroupName Rs("UserClass") = 0 If CLng(NewAsp.MainSetting(16)) = 1 Then Rs("UserLock") = 1 Else Rs("UserLock") = 0 End If Rs("UserFace") = "face/1.gif" Rs("userpoint") = CLng(NewAsp.MainSetting(30)) Rs("usermoney") = 0 Rs("savemoney") = 0 Rs("prepaid") = 0 Rs("experience") = 10 Rs("charm") = 10 Rs("TrueName") = NewAsp.CheckBadstr(Request.Form("username")) Rs("usersex") = usersex Rs("usermail") = NewAsp.CheckStr(Request.Form("usermail")) Rs("oicq") = "" Rs("question") = Question Rs("answer") = md5(Answer,16) Rs("JoinTime") = Now() Rs("ExpireTime") = Now() Rs("LastTime") = Now() Rs("Protect") = 0 Rs("usermsg") = 0 Rs("userlastip") = NewAsp.UserTrueIP If CLng(NewAsp.MainSetting(16)) = 0 And CLng(NewAsp.MainSetting(17)) = 0 Then Rs("userlogin") = 1 Else Rs("userlogin") = 0 End If Rs("UserToday") = "0,0,0,0,0,0,0,0,0,0,0" Rs("usersetting") = ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,," Rs("ip") = NewAsp.UserTrueIP Rs("Badness") = 0 Rs("isask") = 0 Rs.update Rs.Close SQL = "SELECT userid,username,password,nickname,UserGrade,UserGroup,UserClass,UserLock,userlogin FROM NC_user WHERE username = '" & NewAsp.CheckBadstr(Request.Form("username")) & "' ORDER BY userid DESC" Rs.Open SQL, Conn, 1, 3 If Rs("UserLock") = 0 And CLng(NewAsp.MainSetting(17)) = 0 Then Response.Cookies(NewAsp.CookiesName)("userid") = Rs("userid") Response.Cookies(NewAsp.CookiesName)("username") = Rs("username") Response.Cookies(NewAsp.CookiesName)("password") = Rs("password") Response.Cookies(NewAsp.CookiesName)("nickname") = Rs("nickname") Response.Cookies(NewAsp.CookiesName)("UserGrade") = Rs("UserGrade") Response.Cookies(NewAsp.CookiesName)("UserGroup") = Rs("UserGroup") Response.Cookies(NewAsp.CookiesName)("UserClass") = Rs("UserClass") Response.Cookies(NewAsp.CookiesName)("userlastip") = NewAsp.UserTrueIP Response.Cookies(NewAsp.CookiesName).path="/" '----------------------------------------------------------------- '系统整合 '----------------------------------------------------------------- If API_Enable Then Response.Write API_SaveCookie Response.Flush End If '----------------------------------------------------------------- End If Rs.Close Set Rs = Nothing Session("regtime")=Now() '发送注册邮件 Dim username,useremail,topic,mailbody,strMessage If CLng(NewAsp.MainSetting(10))>0 And CLng(NewAsp.MainSetting(19))=1 Then username = strUserName useremail = Trim(Request.Form("usermail")) topic = "您在 " & NewAsp.MainSetting(1) & " 的注册资料" mailbody = NewAsp.ReadTextFile(NewAsp.TemplatePath&"users\reginfo.html") mailbody = Replace(mailbody,"{$sitename}", NewAsp.MainSetting(1), 1, -1, 1) mailbody = Replace(mailbody,"{$siteurl}", NewAsp.MainDomain, 1, -1, 1) mailbody = Replace(mailbody,"{$username}", username, 1, -1, 1) mailbody = Replace(mailbody,"{$topic}", topic, 1, -1, 1) mailbody = Replace(mailbody,"{$password}", UserPassWord, 1, -1, 1) If cmEmail.ErrCode = 0 Then cmEmail.SendMail useremail,topic,mailbody If cmEmail.Count>0 Then strMessage = "
  • 您的注册信息已经发往您的邮箱,[" & Request("usermail") & "] 请注意查收。
  • " Else strMessage = "
  • 由于系统错误,给您发送的注册资料未成功。
  • " End If Else strMessage = "
  • 由于系统错误,给您发送的注册资料未成功。
  • " End If Else strMessage = "
  • 系统未开启邮件功能,请记住您的注册信息。
  • " End If If CLng(NewAsp.MainSetting(16)) = 1 Then strMessage = strMessage & "
  • 请等待管理员认证……
  • " End If '--显示注册成功信息 Dim strHTML strHTML=NewAsp.ReadTextFile(NewAsp.TemplatePath&"users\regsuc.html") strHTML=Replace(strHTML, "{$message}", strMessage) strHTML=Replace(strHTML, "{$username}", Request("username")) '系统整合 If API_Enable Then If API_ReguserUrl <> "0" Then strHTML=Replace(strHTML, "{$links}", API_ReguserUrl) End If End If strHTML=Replace(strHTML, "{$links}", "index.asp") Response.Write strHTML '----------------------------------------------------------------- '系统整合 '----------------------------------------------------------------- If API_Enable Then If API_ReguserUrl <> "0" Then Response.Write "" End If End If '----------------------------------------------------------------- End Sub Function CheckEmailString(str) CheckEmailString=False If str="" Then Exit Function If Len(NewAsp.MainSetting(34))<2 Then CheckEmailString=True Exit Function End If Dim arr,s,i s=NewAsp.MainSetting(34) arr=Split(s, ",") For i=0 To UBound(arr) If InStr(LCase(str), LCase(arr(i))) > 0 Then CheckEmailString=False Exit Function End If Next CheckEmailString=True End Function Function CheckUserNameString(str) CheckUserNameString=False If str="" Then Exit Function If Len(NewAsp.MainSetting(35))<2 Then CheckUserNameString=True Exit Function End If Dim arr,s,i s=NewAsp.MainSetting(35) arr=Split(s, ",") For i=0 To UBound(arr) If InStr(LCase(str), LCase(arr(i))) > 0 Then CheckUserNameString=False Exit Function End If Next CheckUserNameString=True End Function %>