700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 《单域名下整合动网 动易 OBlog程序》

《单域名下整合动网 动易 OBlog程序》

时间:2024-03-13 23:26:33

相关推荐

《单域名下整合动网 动易 OBlog程序》

自从很早以前出了个DPO的接口,感觉好像是把动网、网易、OBlog三个程序融合到了一起,但是刀刀他们所有的程序其实有严重的问题,根本就不能支持多个域名下面访问,花了两天的时间终于明白了程序运行的所以然,呵呵,下面是研究的过程,代码很粗糙先放出来先,至于多个域名下面的Cookies的问题还在解决中。

文件目录:

/API/Response.xml,Request.xml,API_Config.asp,API_Function.asp,API_Response.asp

Response.Xml,Reequest.Xml:跟原先的一样,不用做大的修改,只要把AppID改成你目前的程序就可以了;

API_Config.asp:主要就是路径改下,其他不变

API_Function.asp:模仿了感觉写的OBlog的程序代码

<%

ClassDPO_API_SHOP

PrivateObjHttp,XmlDoc,AppID,API_Key,StrXmlPath,ReType,APO_AppID

PrivateSubClass_Initialize()

AppID="shop"

'OnErrorResumeNext

SetobjHttp=Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")

SetXmlDoc=Server.CreateObject("MSXML2.FreeThreadedDOMDocument.3.0")

EndSub

'读取XML模板文件,当值为True时是请求信息模板,反之是返回信息模板

PublicSubLoadXmlFile(IsRequest)

IfIsRequestThen

StrXmlPath=Server.MapPath("/API/Request.xml")

Else

StrXmlPath=Server.Mappath("/Api/Response.xml")

EndIf

XmlDoc.Load(StrXmlPath)

EndSub

'返回信息到请求端

PublicFunctionSendResult(status,strMsg)

SetNodeValue"appid",AppID

SetNodeValue"status",status

SetNodeValue"message",strMsg

Response.ContentType="text/xml"

Response.Charset="gb2312"

Response.Clear

Response.Write"<?xmlversion=""1.0""encoding=""gb2312""?>"

Response.WriteXmlDoc.documentElement.xml

EndFunction

'将读取到XML模板中的各个元素赋值

PrivateFunctionSetNodeValue(StrNodeName,StrNodeValue)

IfIsNull(StrNodeValue)orStrNodeValue=""ThenExitFunction

'OnErrorResumeNext

XmlDoc.SelectSingleNode("//"&StrNodeName).text=StrNodeValue

IfErrThen

ErrMsg=ErrMsg&"写入信息发生错误。"

FoundErr=True

ExitFunction

EndIf

EndFunction

EndClass

%>

API_Response.asp:做了很大的改动,目前还不知道这样的改动是不是会造成程序不稳定,先发布出来先

<%@LANGUAGE=VBScriptCodePage=936%>

<!--#includefile="../Inc/Conn.asp"-->

<!--#includefile="../Inc/MD5.asp"-->

<!--#IncludeFile="API_Config.asp"-->

<!--#includefile="API_Function.asp"-->

<%

DimFoundErr,ErrMsg

DimAction,SysKey,UserNam,UserPass,AppID,UserMail,Question,Answer

DimXMLDom,ShopAPI

SetShopAPI=NewDPO_API_SHOP

ShopAPI.LoadXmlFileFalse

SetXMLdom=Server.CreateObject("Microsoft.XMLDOM")

XMLdom.Async=False

XMLdom.Load(Request)

IfAPI_Enable=FalseThen

ErrMsg=ErrMsg&"系统并未开启整合接口!"

FoundErr=True

ShopAPI.SendResult1,ErrMsg

SetShopAPI=Nothing

Response.End

EndIf

IfXMLdom.parseError.errorCode<>0Then

ErrMsg=ErrMsg&"接收数据出错,请重试!"

FoundErr=True

ShopAPI.SendResult1,ErrMsg

SetShopAPI=Nothing

Response.End

Else

Appid=XMLdom.documentElement.selectSingleNode("//appid").text

SysKey=XMLdom.documentElement.selectSingleNode("//syskey").text

Action=XMLdom.documentElement.selectSingleNode("//action").text

UserName=XMLdom.documentElement.selectSingleNode("//username").text

EndIf

IfChkSyskey=TrueThen

SelectCaseAction

Case"checkname"

CallCheckName()

Case"reguser"

CallRegUser()

Case"login"

CallLogin()

EndSelect

IfFoundErrThen

ShopAPI.SendResult1,ErrMsg

Else

ShopAPI.SendResult0,""

EndIf

Else

ShopAPI.SendResult1,"安全验证码不正确。"

EndIf

SetXMLDom=Nothing

SetShopAPI=Nothing

'**************************************************

'函数名:CheckName

'作用:判断用户名称是否可以注册

'**************************************************

FunctionCheckName()

SetRs=Conn.Execute("SelectUserNameFrom[User]WhereUserName='"&UserName&"'")

IfNot(Rs.EofOrRs.Bof)Then

ErrMsg=ErrMsg&"用户名已经存在,请更换。"

FoundErr=True

CheckName=True

Else

CheckName=False

EndIf

Rs.Close

SetRs=Nothing

EndFunction

'**************************************************

'函数名:CheckEMail

'作用:判断用户邮件是否可以注册

'**************************************************

FunctionCheckEMail()

UserMail=XMLdom.documentElement.selectSingleNode("//email").text

SetRs=Conn.Execute("SelectUserMailFrom[User]WhereUserMail='"&UserMail&"'")

IfNot(Rs.EofOrRs.Bof)Then

ErrMsg=ErrMsg&"邮件地址已经存在,请更换。"

FoundErr=True

CheckEMail=True

Else

CheckEMail=False

EndIf

Rs.Close

SetRs=Nothing

EndFunction

'**************************************************

'函数名:RegUser

'作用:注册新的登录帐号

'**************************************************

FunctionRegUser()

IfCheckName=TrueOrCheckEMail=TrueThen

FoundErr=True

ExitFunction

EndIf

CallGetXML()

SetRs=Server.CreateObject("Adodb.RecordSet")

Sql="Select*From[User]"

Rs.OpenSql,Conn,1,3

Rs.AddNew

Rs("UserName")=UserName

Rs("UserPass")=MD5(UserPass,32)

Rs("UserMail")=UserMail

Rs("Question")=Question

Rs("Answer")=MD5(Answer,32)

Rs.UpDate

Rs.Close

SetRs=Nothing

FoundErr=False

EndFunction

'**************************************************

'函数名:Login

'作用:用户登录系统

'**************************************************

FunctionLogin()

PassWord=XMLdom.documentElement.selectSingleNode("//password").text

IfUserName=""Then

ErrMsg=ErrMsg&("登录名称不能为空。")

FoundErr=True

ExitFunction

EndIf

IfPassWord=""Then

ErrMsg=ErrMsg&("登录密码不能为空。")

FoundErr=True

ExitFunction

EndIf

PassWord=Md5(PassWord,32)

SetRs=Server.CreateObject("Adodb.RecordSet")

Sql="SelectUserName,UserPassFrom[User]WhereUserName='"&UserName&"'"

Rs.OpenSql,Conn,1,3

IfNot(Rs.EofOrRs.Bof)Then

IfRs("UserPass")=PassWordThen

Response.Cookies("SunLeaf_User").Domain="."

Response.Cookies("SunLeaf_User").Expires=DateAdd("d",1,Now)

Response.Cookies("SunLeaf_User")=UserName

Else

ErrMsg=ErrMsg&"登录密码错误。"

FoundErr=True

EndIf

Else

ErrMsg=ErrMsg&"登录帐号不存在。"

FoundErr=True

EndIf

Rs.Close

SetRs=Nothing

EndFunction

'**************************************************

'函数名:GetXML

'作用:接收提交过来的XML数据

'**************************************************

FunctionGetXML()

OnErrorResumeNext

UserPass=XMLdom.documentElement.selectSingleNode("//password").text

UserMail=XMLdom.documentElement.selectSingleNode("//email").text

Question=XMLdom.documentElement.selectSingleNode("//question").text

Answer=XMLdom.documentElement.selectSingleNode("//answer").text

EndFunction

'**************************************************

'函数名:ChkSyskey

'作用:判断API_KEY是否一致

'**************************************************

FunctionChkSyskey()

IfIsNull(UserName)orUserName=""orIsNull(SysKey)orSysKey=""Then

ChkSyskey=False

ExitFunction

EndIf

SysKey=LCase(SysKey)

IfLen(SysKey)=32ThenSysKey=Mid(SysKey,9,16)

DimStrEnKey

StrEnKey=Md5(UserName&API_Key,16)

IfLCase(SysKey)=LCase(StrEnKey)Then

ChkSyskey=True

Else

ChkSyskey=False

EndIf

EndFunction

%>

目前存在问题:不能在多个域名下面同时登录,即使是二级域名好像也不可以,真是奇怪了不知道是什么地方的问题,还在解决中。去刀刀博客上面找了下面,好像只有数据同步的工具也没有说在多个域名下面运行这个程序的说,怪怪怪。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。