%
'****************************************************
' Software name:Kesion CMS 6.0
' Email: service@kesion.com . QQ:111394,9537636
' Web: http://www.kesion.com http://www.kesion.cn
' Copyright (C) Kesion Network All Rights Reserved.
'****************************************************
'-- 声明:本程序修改自动网论坛系统Api接口
'=========================================================
Dim XMLDom,XmlDoc,Node,Status,Messenge
Dim UserName,Act,appid
Status = 1
Messenge = ""
If Request.QueryString<>"" And API_Enable Then
SaveUserCookie()
Else
Set XmlDoc = KS.InitialObject("msxml2.FreeThreadedDOMDocument" & MsxmlVersion)
XmlDoc.ASYNC = False
If API_Enable Then
If Not XmlDoc.LOAD(Request) Then
Status = 1
Messenge = "数据非法,操作中止!"
appid = "未知"
Else
If CheckPost() Then
Select Case Act
Case "checkname"
Checkname()
Case "reguser"
UserReguser()
Case "login"
UesrLogin()
Case "logout"
LogoutUser()
Case "update"
UpdateUser()
Case "delete"
Deleteuser()
Case "lock"
Lockuser()
Case "getinfo"
GetUserinfo()
End Select
End If
End If
Else
Status = 0
Messenge = "API接口关闭,操作中止!"
appid = "KesionCMS"
End If
ReponseData()
Set XmlDoc = Nothing
End If
Sub ReponseData()
If Act <> "getinfo" Then
XmlDoc.loadxml "dvbbs0"
End If
XmlDoc.documentElement.selectSingleNode("appid").text = "KesionCMS"
If API_Debug And Act <> "reguser" Then
XmlDoc.documentElement.selectSingleNode("status").text = 0
Messenge = ""
Else
XmlDoc.documentElement.selectSingleNode("status").text = status
End If
XmlDoc.documentElement.selectSingleNode("body/message").text = ""
Set Node = XmlDoc.createCDATASection(Replace(Messenge,"]]>","]]>"))
XmlDoc.documentElement.selectSingleNode("body/message").appendChild(Node)
Response.Clear
Response.ContentType="text/xml"
Response.CharSet="utf-8"
Response.Write ""&vbNewLine
Response.Write XmlDoc.documentElement.XML
End Sub
Function CheckPost()
CheckPost = False
Dim Syskey
If XmlDoc.documentElement.selectSingleNode("action") is Nothing or XmlDoc.documentElement.selectSingleNode("syskey") is Nothing or XmlDoc.documentElement.selectSingleNode("username") is Nothing Then
Status = 1
Messenge = Messenge & "
非法请求。"
Exit Function
End If
UserName = KS.R(XmlDoc.documentElement.selectSingleNode("username").text)
Syskey = XmlDoc.documentElement.selectSingleNode("syskey").text
Act = XmlDoc.documentElement.selectSingleNode("action").text
Appid = XmlDoc.documentElement.selectSingleNode("appid").text
Dim NewMd5,OldMd5
NewMd5 = Md5(UserName & API_ConformKey,16)
Md5OLD = 1
OldMd5 = Md5(UserName & API_ConformKey,16)
Md5OLD = 0
If Syskey=NewMd5 or Syskey=OldMd5 Then
CheckPost = True
Else
Status = 1
Messenge = Messenge & "请求数据验证不通过,请与管理员联系。"
End If
End Function
Sub GetUserinfo()
Dim Rs,Sql
XmlDoc.loadxml "KesionCMS0"
Sql = "SELECT TOP 1 * FROM KS_User WHERE UserName='" & KS.R(UserName) & "'"
Set Rs = Conn.Execute(Sql)
If Not Rs.Eof And Not Rs.Bof Then
XmlDoc.documentElement.selectSingleNode("body/email").text = Rs("email") & ""
XmlDoc.documentElement.selectSingleNode("body/question").text = Rs("question") & ""
XmlDoc.documentElement.selectSingleNode("body/answer").text = Rs("answer") & ""
XmlDoc.documentElement.selectSingleNode("body/gender").text = Rs("sex") & ""
XmlDoc.documentElement.selectSingleNode("body/birthday").text = ""
XmlDoc.documentElement.selectSingleNode("body/mobile").text = RS("mobile")
XmlDoc.documentElement.selectSingleNode("body/userip").text = Rs("LastLoginIP") & ""
XmlDoc.documentElement.selectSingleNode("body/jointime").text = Rs("Joindate") & ""
XmlDoc.documentElement.selectSingleNode("body/experience").text =""
XmlDoc.documentElement.selectSingleNode("body/ticket").text = ""
XmlDoc.documentElement.selectSingleNode("body/valuation").text = Rs("point") & ""
XmlDoc.documentElement.selectSingleNode("body/balance").text = Rs("Money") & ""
XmlDoc.documentElement.selectSingleNode("body/posts").text = Rs("zip") & ""
XmlDoc.documentElement.selectSingleNode("body/userstatus").text = Rs("Locked")
XmlDoc.documentElement.selectSingleNode("body/homepage").text = Rs("HomePage") & ""
XmlDoc.documentElement.selectSingleNode("body/qq").text = Rs("qq")
XmlDoc.documentElement.selectSingleNode("body/msn").text = rs("msn")
XmlDoc.documentElement.selectSingleNode("body/truename").text = Rs("realName") & ""
XmlDoc.documentElement.selectSingleNode("body/telephone").text = Rs("OfficeTel") & ""
XmlDoc.documentElement.selectSingleNode("body/address").text = Rs("address") & ""
Status = 0
Messenge = Messenge & "读取用户资料成功。"
Else
Status = 1
Messenge = Messenge & "该用户不存在。"
End If
Rs.Close
Set Rs = Nothing
End Sub
Sub Checkname()
Dim Rs,SQL,UserEmail
UserEmail = KS.R(Trim(XmlDoc.documentElement.selectSingleNode("email").text))
If KS.IsValidEmail(UserEmail) = False Then
Messenge = "您的Email有错误!"
Status = 1
Exit Sub
End If
If CInt(KS.Setting(28)) = 1 Then
Set Rs = Conn.Execute("SELECT userid FROM KS_User WHERE Email='" & UserEmail & "'")
If Not Rs.EOF Then
Status = 1
Messenge = "此邮箱["&UserEmail&"]已经占用,请您换一个邮箱再注册吧。"
Exit Sub
End If
Rs.Close:Set Rs = Nothing
End If
Set Rs = Conn.Execute("SELECT username FROM KS_User WHERE username = '" & UserName & "'")
If Not (Rs.bof And Rs.EOF) Then
Status = 1
Messenge = "Sorry!此用户已经存在,请换一个用户名再试!"
Else
Status = 0
Messenge = "" & UserName & " 尚未被人使用,赶紧注册吧!"
End If
Rs.Close:Set Rs = Nothing
End Sub
Sub UserReguser()
Dim nickname,UserPass,UserEmail,Question,Answer,usercookies
Dim strGroupName,Password,usersex,sex
Dim Rs,SQL
UserPass = KS.R(XmlDoc.documentElement.selectSingleNode("password").text)
UserEmail = KS.R(Trim(XmlDoc.documentElement.selectSingleNode("email").text))
Question = KS.R(XmlDoc.documentElement.selectSingleNode("question").text)
Answer = KS.R(XmlDoc.documentElement.selectSingleNode("answer").text)
sex = KS.R(XmlDoc.documentElement.selectSingleNode("gender").text)
Dim NewRegUserMoney:NewRegUserMoney=KS.Setting(38)
Dim NewRegUserScore:NewRegUserScore=KS.Setting(39)
Dim NewRegUserPoint:NewRegUserPoint=KS.Setting(40)
If sex = "0" Then
usersex = "女"
Else
usersex = "男"
End If
usercookies = 1
If UserName = "" Or UserPass = "" Then
Status = 1
Messenge = Messenge & "请填写用户名或密码。"
Exit Sub
End If
If Question = "" Then Question = KS.MakeRandomChar(20)
If Answer = "" Then Answer = KS.MakeRandomChar(20)
nickname = UserName
Password = MD5(KS.R(UserPass),16)
Answer = Answer
If KS.IsValidEmail(UserEmail) = False Then
Messenge = Messenge & "您的Email有错误!"
Status = 1
Exit Sub
End If
Set Rs = Conn.Execute("SELECT username FROM KS_User WHERE username='" & UserName & "'")
If Not (Rs.BOF And Rs.EOF) Then
Status = 1
Messenge = Messenge & "Sorry!此用户已经存在,请换一个用户名再试!"
Exit Sub
End If
Rs.Close:Set Rs = Nothing
If CInt(KS.Setting(28)) = 1 Then
Set Rs = Conn.Execute("SELECT userid FROM KS_User WHERE Email='" & UserEmail & "'")
If Not Rs.EOF Then
Status = 1
Messenge = Messenge & "对不起!本系统已经限制一个邮箱只能注册一个账号。此邮箱["&UserEmail&"]已经占用,请您换一个邮箱再注册吧。"
Exit Sub
End If
Rs.Close:Set Rs = Nothing
End If
Set Rs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM KS_User WHERE (userid is null)"
Rs.Open SQL,Conn,1,3
Rs.Addnew
Rs("username") = UserName
Rs("password") = Password
RS("GroupID")=2 '设定默认用户类型为个人会员
Rs("answer") = Answer
Rs("question") = Question
Rs("UserFace") = "Images/Face/0.gif"
Rs("RealName") = UserName
Rs("sex") = usersex
Rs("Email") = UserEmail
Rs("qq") = ""
RS("RegDate")=Now
RS("BeginDate")=Now '开始计算时间
RS("LastLoginIP")=KS.GetIP
RS("JoinDate")=Now
RS("LastLoginTime")=Now
'新会员注册,更新相应的数据
RS("Money")=NewRegUserMoney
RS("Score")=NewRegUserScore
RS("Point")=NewRegUserPoint
Call KS.PointInOrOut(0,0,UserName,1,NewRegUserPoint,"系统","注册新会员,赠送的" & KS.Setting(46) & KS.Setting(45))
RS("Locked")=0
Rs.update
RS.movelast
Conn.Execute("Update KS_User Set ChargeType=" & Conn.Execute("Select ChargeType From KS_UserGroup Where ID=" & RS("GroupID"))(0) & " Where UserID=" & RS("UserID"))
RS.Close
'===================写入个人空间================
If KS.SSetting(1)=1 Then
RS.Open "Select * From KS_Blog Where Blogid is null",conn,1,3
RS.AddNew
RS("UserName")=UserName
RS("BlogName")=UserName & "的个人空间"
RS("ClassID") = KS.ChkClng(Conn.Execute("Select Top 1 ClassID From KS_BlogClass")(0))
RS("TemplateID")=KS.ChkClng(Conn.Execute("Select Top 1 ID From KS_BlogTemplate Where flag=2 and IsDefault='true'")(0))
RS("Announce")="暂无公告!"
RS("ContentLen")=500
RS("Recommend")=0
RS("Status")=1
RS.Update
RS.Close
end if
Set RS=Nothing
'==================================
Status = 0
Messenge = "用户注册成功。"
End Sub
Sub UesrLogin()
Dim UserPass
UserPass = XmlDoc.documentElement.selectSingleNode("password").text
If UserName="" or UserPass="" Then
Status = 1
Messenge = Messenge & "请填写用户名或密码。"
Exit Sub
End If
UserPass = Md5(UserPass,16)
If ChkUserLogin(username,UserPass,1) Then
Status = 0
Messenge = Messenge & "登陆成功。"
Else
Status = 1
Messenge = Messenge & "登陆失败。"
End If
End Sub
Sub LogoutUser()
Response.Cookies(KS.SiteSn).path = "/"
Response.Cookies(KS.SiteSn)("UserName") = ""
Response.Cookies(KS.SiteSn)("Password") = ""
Response.Cookies(KS.SiteSn)("RndPassword")=""
End Sub
Sub UpdateUser()
Dim Rs,SQL
Dim UserPass,UserEmail,Question,Answer
UserPass = XmlDoc.documentElement.selectSingleNode("password").text
UserEmail = Trim(XmlDoc.documentElement.selectSingleNode("email").text)
Question = XmlDoc.documentElement.selectSingleNode("question").text
Answer = XmlDoc.documentElement.selectSingleNode("answer").text
If UserPass <> "" Then
UserPass = Md5(UserPass,16)
End If
If Answer <> "" THen
Answer = Answer
End If
If KS.IsValidEmail(UserEmail) = False Then
UserEmail = ""
End If
Set Rs = Server.CreateObject("Adodb.RecordSet")
SQL = "SELECT TOP 1 * FROM [KS_User] WHERE Username='" & UserName & "'"
Rs.Open SQL,Conn,1,3
If Not Rs.Eof And Not Rs.Bof Then
If UserPass <> "" Then Rs("password") = UserPass
If Answer <> "" THen Rs("answer") = Answer
If UserEmail <> "" Then Rs("email") = UserEmail
If Question <> "" Then Rs("question") = Question
Rs.update
Status = 0
Messenge = "基本资料修改成功。"
Response.Cookies(KS.SiteSN)("password") = UserPass
Else
Status = 1
Messenge = "该用户不存在,修改资料失败。"
End If
Rs.Close:Set Rs = Nothing
End Sub
Sub Deleteuser()
Dim Del_Users,i,AllUserID,Del_UserName
Dim Rs
Del_Users = Split(UserName,",")
For i = 0 To UBound(Del_Users)
Del_UserName = KS.R(Del_Users(i))
Set Rs = Conn.Execute("SELECT userid,username FROM [KS_User] WHERE UserName='" & Del_UserName & "'")
If Not (Rs.Eof And Rs.Bof) Then
Conn.Execute ("DELETE FROM KS_User WHERE UserName='" & Del_UserName & "')")
Conn.Execute ("DELETE FROM KS_Favorite WHERE UserName='" & Del_UserName & "')")
Conn.Execute ("DELETE FROM KS_Comment WHERE UserName='" & Del_UserName & "')")
Messenge = Messenge & "用户(" & Del_UserName & ")删除成功。"
End If
Next
Set Rs = Nothing
Status = 0
End Sub
Sub Lockuser()
Dim UserStatus
If XmlDoc.documentElement.selectSingleNode("userstatus") is Nothing Then
Messenge = "参数非法,中止请求。"
Status = 1
Exit Sub
ElseIf Not IsNumeric(XmlDoc.documentElement.selectSingleNode("userstatus").text) Then
Messenge = "参数非法,中止请求。"
Status = 1
Exit Sub
Else
UserStatus = Clng(XmlDoc.documentElement.selectSingleNode("userstatus").text)
End If
If UserStatus = 0 Then
Conn.Execute ("UPDATE KS_User SET Locked=0 WHERE Username='" & UserName & "'")
Else
Conn.Execute ("UPDATE KS_User SET Locked=1 WHERE Username='" & UserName & "'")
End If
Status = 0
End Sub
Sub SaveUserCookie()
Dim S_syskey,Password,usercookies,TruePassWord,userclass,Userhidden
S_syskey = Request.QueryString("syskey")
UserName = KS.R(Request.QueryString("UserName"))
Password = Request.QueryString("Password")
usercookies = Request.QueryString("savecookie")
If UserName="" or S_syskey="" Then Exit Sub
Dim NewMd5,OldMd5
NewMd5 = Md5(UserName & API_ConformKey,16)
Md5OLD = 1
OldMd5 = Md5(UserName & API_ConformKey,16)
Md5OLD = 0
If Not (S_syskey=NewMd5 or S_syskey=OldMd5) Then
Exit Sub
End If
If usercookies="" or Not IsNumeric(usercookies) Then usercookies = 0
'用户退出
If Password = "" Then
Response.Cookies(KS.SiteSn).path = "/"
Response.Cookies(KS.SiteSn)("UserName") = ""
Response.Cookies(KS.SiteSn)("Password") = ""
Response.Cookies(KS.SiteSn)("RndPassword")=""
Exit Sub
End If
ChkUserLogin username,password,usercookies
End Sub
Function ChkUserLogin(username,password,usercookies)
ChkUserLogin = False
Dim Rs,SQL,RndPassWord
RndPassWord=KS.R(KS.MakeRandomChar(20))
Set Rs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM [KS_User] WHERE username='" & UserName & "'"
Rs.Open SQL, Conn, 1, 3
If Not (Rs.BOF And Rs.EOF) Then
If password <> Rs("password") Then
ChkUserLogin = False
Exit Function
End If
If Rs("Locked") <> 0 Then
ChkUserLogin = False
Exit Function
End If
'登录成功,更新用户相应的数据
If datediff("n",RS("LastLoginTime"),now)>=KS.Setting(36) then '判断时间
RS("Score")=RS("Score")+KS.Setting(37)
end if
RS("LastLoginIP") = KS.GetIP
RS("LastLoginTime") = Now()
RS("LoginTimes") = RS("LoginTimes") + 1
RS("RndPassword")= RndPassWord
Rs.Update
Select Case usercookies
Case 0
Response.Cookies(KS.SiteSn)("usercookies") = usercookies
Case 1
Response.Cookies(KS.SiteSn)("usercookies") = usercookies
Response.Cookies(KS.SiteSn).Expires=Date+1
Case 2
Response.Cookies(KS.SiteSn).Expires=Date+31
Response.Cookies(KS.SiteSn)("usercookies") = usercookies
Case 3
Response.Cookies(KS.SiteSn).Expires=Date+365
Response.Cookies(KS.SiteSn)("usercookies") = usercookies
End Select
Response.Cookies(KS.SiteSn).path = "/"
Response.Cookies(KS.SiteSn)("UserName") = Rs("username")
Response.Cookies(KS.SiteSn)("Password") = Rs("password")
Response.Cookies(KS.SiteSn)("RndPassword")=RndPassWord
ChkUserLogin = True
End If
Rs.Close:Set Rs = Nothing
End Function
%>