发新话题
打印

全新oBlog与动易2005(0428)免费版整合

全新oBlog与动易2005(0428)免费版整合

全新oBlog与动易2005(0428)免费版整合

整合测试环境

全新的oBlog2.52、动易2005(0428免费版)、动易安装于网站根目录,oBlog安装于根目录下的Blog目录
整合通过

注意事项:

1.压缩包内共有如下文件,整合前请将注意将原文件做好备分,以备不测;
2.此整合请使用动易2005(0428)版本(以下简称PE),全新安装的oBlog2.52版本(以下简称Blog),oBlog中已存在用户数据的,请不要整合,以免用户数据导致不同步出现错误;
3.Blog和PE源代码版权属原作者所有。

压缩包文件有:
==================================================
count.asp
user_chklogin.asp
user_chkpass.asp
user_chkreg.asp
user_info.asp
user_logout.asp
userPE_chklogin.asp
inc/function.asp
inc/syscode.asp
ReadMe.txt
==================================================

◇飘堕的淡褶  QQ●147468
http://blog.windecember.cn

▲中国思科社区[GOOGLE网上论坛]
http://groups.google.com/group/cciecn
http://club.cn.yahoo.com/ccie

TOP

整合实现:
1.PE登陆以后进入blog实现自动注册(blog中没有用户数据时),自动登陆(blog中已经存在同名用户)
2.可以将blog嵌入PE用户控制面板
3.注销blog则PE同时注销,注销PE则Blog也无法登陆(注意这里所说的是“无法登陆”而blog并没有真正注销,用户cookie数据仍然保留着,而是在新的PE用户进入Blog时经过判断登陆用户名与cookie不一致,才清空上一次的用户cookie数据)

整合方法:

一、整合注意:
如果你的Blog需要整合入PE用户控制面板后台中的,则需要将user_chkpass.asp文件覆盖;反之则不需要覆盖。此方法可自行选择,由于需要<iframe>而屏蔽了Blog对连接地址的检测,由此导致的用户数据泄密等问题不予负责。

二、整合步骤
把压缩包解开,将文件覆盖入Blog目录中,如果你的Blog安装于动易网站的Blog目录下的话,则不需要任何修改即可使用。
如果你的Blog安装于其他目录的,则需要进行如下修改:

count.asp
查找下面的字串:
==================================================
sub showlogin()
response.write "document.write('<table align=center width=100% border=0 cellspacing=0 celpladding=0>');"
response.write "document.write('<form action="&blogurl&"User_ChkLogin.asp method=post name=UserLogin onSubmit=return CheckForm();>');"
response.write "document.write('<tr><td height=25 align=right>用户名称:</td><td height=25><input name=UserName type=text id=UserName size=12 maxlength=20></td></tr>');"
response.write "document.write('<tr><td height=25 align=right>登陆密码:</td><td height=25><input name=Password type=password id=Password size=12 maxlength=20></td></tr>');"
response.write "document.write('<tr><td height=25 align=right>Cookie:</td><td height=25><select name=CookieDate><option selected value=0>不保存</option><option value=1>保存一天</option>');"
response.write "document.write('<option value=2>保存一月</option><option value=3>保存一年</option></select></td></tr>');"
response.write "document.write('<tr align=center><td height=30 colspan=2><input name=Login type=submit id=Login value= 登录 > ');"
==================================================
把下面那行用户注册与忘记密码的连接地址修改为你的PE用户注册和忘记密码的连接地址。


inc/syscode.asp
查找下面的字串:
==================================================
sub ShowUserLogin()
if CheckUserLogined()=False then
dim regurl,gpurl
if ot_user then
regurl="<a href='"&ot_regurl&"' target='_blank'>"
gpurl="<a href='"&ot_lostpasswordurl&"' target='_blank'>"
else
==================================================
把下面那行用户注册与忘记密码的连接地址修改为你的PE用户注册和忘记密码的连接地址。


inc/function.asp
查找下面的字串
==================================================
bstr= "<center><a style='color: #444444' href='index.asp'>站点首页</a> | <a style='color: #444444' href='mailt"&webmasteremail&"'>联系我们</a>
==================================================
把字串后边的博客注册的连接地址修改为你的PE用户注册的连接地址。

非Blog安装目录的修改完毕

三、整合过程思路
在第三部分讲解一下我整合oBlog的过程和思路,仅供对asp喜欢且有兴趣的朋友作为参考,以便能将更多的程序整合进动易中。(我也是根据整合oBlog的思路把我的网站的交友程序也整合进来了*^_^*)

1)inc/function.asp

这个文件的function CheckUserLogined()是根据cookie检测用户是否登陆的,所以这部分的修改比较重要,出问题最多的也是这部分 -_-!
首先在文件开始的地方定义一下动易的用户接口
加入了下面的代码
==================================================
<!-- #Include Virtual="../UserInfo.asp" -->
<%
dim username,userlevel
'定义动易通用接口类
Dim MyPE
'完毕
'初始化动易通用接口类
Set MyPE = New PE_UserInfo
'完毕
==================================================

然后在function CheckUserLogined()部分,做了比较大的修改。

==================================================
'整合开始
dim Logined,Password,rsLogin,sqlLogin,PasswordPE'定义动易密码变量
Logined=True
PasswordPE=MyPE.Password'取动易密码
'取博客cookie
UserName=DecodeCookie(Request.Cookies(cookiesname)("UserName"))
Password=DecodeCookie(Request.Cookies(cookiesname)("Password"))
userlevel=DecodeCookie(Request.Cookies(cookiesname)("userlevel"))
if userlevel<>"" then userlevel=cint(userlevel)
'判断博客是否有登陆
if UserName="" then
Logined=False
end if
if Password="" then
Logined=False
end if
'定义变量
dim rsPE,sqlPE,rsUserPE,sqlUserPE,LoginNum
'判断动易是否登陆
if MyPE.UserName<>"" then
'如果当前动易登陆与博客cookie中用户名不同则清空cookie
if UserName<>MyPE.UserName then
Response.Cookies(cookiesname)("UserName")=CodeCookie("")
Response.Cookies(cookiesname)("Password")=CodeCookie("")
Response.Cookies(cookiesname)("userlevel")=CodeCookie("0")
Logined=False
end if
'如果动易登陆,检查博客数据库是否有该用户名
if PasswordPE<>assword then
Set rsUserPE=Server.CreateObject("Adodb.RecordSet")
sqlUserPE="select * from [user] where Username='" & MyPE.UserName & "'"
rsUserPE.Open sqlUserPE,Conn,1,3
'该用户名存在,则同步一次用户密码入博客数据库(避免用户中途修改密码导致博客密码错误)
If not(rsUserPE.bof and rsUserPE.eof) then
rsuserPE("UserPassword")=PasswordPE
rsUserPE.update
rsUserPE.Close
set rsUserPE=nothing
end if
'清空博客的cookie(避免cookie中用户密码与数据库中密码不相同的情况)
Response.Cookies(cookiesname)("UserName")=CodeCookie("")
Response.Cookies(cookiesname)("Password")=CodeCookie("")
Response.Cookies(cookiesname)("userlevel")=CodeCookie("0")
end if
'如果博客cookie中没有用户信息
if Logined=False then
sqlPE="select * from [user] where Username='" & MyPE.UserName & "'"
set rsPE=conn.execute(sqlPE)
'判断博客库中是否存在该用户,如果无则自动调用动易用户数据注册
If rsPE.bof and rsPE.eof then
Response.Write "<form name=reg method=post action=user_chkreg.asp>" & vbCrLf
Response.Write " <input name=username type='hidden' value='" & MyPE.UserName & "'><br>" & vbCrLf
Response.Write " <input name=nickname type='hidden' value='" & MyPE.UserName & "'><br>" & vbCrLf
Response.Write " <input name=password type='hidden' value='" & MyPE.Password & "'><br>" & vbCrLf
Response.Write " <input name='codestr' type='hidden' value='" & Session("GetCode") & "'><br>" & vbCrLf
Response.Write " <input name=question type='hidden' value='" & MyPE.Question & "'><br>" & vbCrLf
Response.Write " <input name=an type='hidden' value='" & MyPE.Answer & "'><br>" & vbCrLf
Response.Write " <input name=email type='hidden't value='" & MyPE.Email & "'><br>" & vbCrLf
Response.Write " <input name=blogname type='hidden' value='" & MyPE.UserName & "'><br>" & vbCrLf
Response.Write " <input name=sex type='hidden' value='" & MyPE.Sex(0) & "'><br>" & vbCrLf
Response.Write " <input name=usertype type='hidden' value=1><br><br>" & vbCrLf
Response.Write "</form>" & vbCrLf
Response.Write "<script language='javascript'>" & vbCrLf
Response.Write "reg.submit();" & vbCrLf
Response.Write "</script>" & vbCrLf
'该用户存在则自动登陆
else
Response.Write "<form name='Login' action='userPE_ChkLogin.asp' method='post'>" & vbCrLf
Response.Write " <input name='UserName' type='hidden' value='" & MyPE.UserName & "'><br>" & vbCrLf
Response.Write " <input name='Password' type='hidden' value='" & MyPE.Password & "'><br>" & vbCrLf
Response.Write " <input name='CookieDate' type='hidden' value='" & MyPE.CookieDate & "'><br>" & vbCrLf
Response.Write "</form>" & vbCrLf
Response.Write "<script language='javascript'>" & vbCrLf
Response.Write "Login.submit();" & vbCrLf
Response.Write "</script>" & vbCrLf
end if
else
'如果博客cookie中有用户信息,在博客数据库中查找动易用户是否注册,没有注册的则调用自动注册
sqlPE="select * from [user] where Username='" & MyPE.UserName & "'"
set rsPE=conn.execute(sqlPE)
If rsPE.bof and rsPE.eof then
Response.Write "<form name=reg method=post action=user_chkreg.asp>" & vbCrLf
Response.Write " <input name=username type='hidden' value='" & MyPE.UserName & "'><br>" & vbCrLf
Response.Write " <input name=nickname type='hidden' value='" & MyPE.UserName & "'><br>" & vbCrLf
Response.Write " <input name=password type='hidden' value='" & MyPE.Password & "'><br>" & vbCrLf
Response.Write " <input name='codestr' type='hidden' value='" & Session("GetCode") & "'><br>" & vbCrLf
Response.Write " <input name=question type='hidden' value='" & MyPE.Question & "'><br>" & vbCrLf
Response.Write " <input name=an type='hidden' value='" & MyPE.Answer & "'><br>" & vbCrLf
Response.Write " <input name=email type='hidden't value='" & MyPE.Email & "'><br>" & vbCrLf
Response.Write " <input name=blogname type='hidden' value='" & MyPE.UserName & "'><br>" & vbCrLf
Response.Write " <input name=sex type='hidden' value='" & MyPE.Sex(0) & "'><br>" & vbCrLf
Response.Write " <input name=usertype type='hidden' value=1><br><br>" & vbCrLf
Response.Write "</form>" & vbCrLf
Response.Write "<script language='javascript'>" & vbCrLf
Response.Write "reg.submit();" & vbCrLf
Response.Write "</script>" & vbCrLf
end if
end if
rsPE.close
set rsPE=nothing
else
Logined=False
end if
'完毕


这部分我在代码里也做了比较详细的注释,大家可以慢慢看,很好理解的。

◇飘堕的淡褶  QQ●147468
http://blog.windecember.cn

▲中国思科社区[GOOGLE网上论坛]
http://groups.google.com/group/cciecn
http://club.cn.yahoo.com/ccie

TOP

由于修改了登陆的方式需要从PE登陆的用户cookie信息取出,所以Blog注册与取密的连接就需要修改成为转向PE的注册和取密。

在上面的修改中,还参考了小李刀刀对动网论坛(下面简称为DV)的整合方法:由于DV和PE整合的时候,用户并不能从DV中直接登陆,而是需要先登陆PE,再进入DV,这时候DV就判断DV的密码是不是和PE的一样,不一样的话就进行提示密码不一致,需要用户手工输入密码或者点个连接同步一下密码实现自动登陆。

在Blog的整合的时候,我就不想这么烦琐了,直接就取PE的cookie用户信息,判断blog中是否存在,如果存在,再继续判断blog中的用户密码是否一致,不一致的就直接同步密码再自动登陆。由于这样的登陆方式,用户就没必要再修改blog中的密码、密码问题了,所以我又修改了user_info.asp,将修改密码和密码问题的部分隐掉了。


2)userPE_chklogin.asp

你可以看到压缩包中多出这样一个文件是blog中没有的,其实这个文件内容和user_chklogin.asp是几乎完全一样的,我修改的地方就是屏蔽掉了密码的md5加密过程。

由于Blog在登陆的时候,需要对用户输入的密码进行md5加密再和blog数据库中用户的密码对比是否一致,而在自动登陆的时候,调用的是PE cookie中已经加了密的密码,所以就多复制了一份然后作为自动登陆的调用。

存在的问题1.原来想整合成为注销PE的时候,同时注销Blog的,最后还是没实现,因为我不想修改PE的任何地方,所以就改成了现在的“无法登陆”

2.PE没登陆或者注销后,在Blog是无法登陆的,所以大家使用时候需要注明一下“Blog已和本站整合,需要先登陆本站再进入Blog”诸如此类的话语给用户提示,本来也还应该做一个提示页面,登陆时候自动跳转到PE登陆页的,因为人懒,所以就没做了 -_-!

3.大家整合时希望使用的是全新的Blog和PE整合(PE有没有数据没有关系),如果Blog中已经有数据的又需要整合的,应该先对用户数据进行一次对比校验,看看重名用户有多少,一般做数据对比时候可以用注册名+邮件地址来对比会好一些,如果你会asp的话,这个就很容易做了。不过还是不建议blog已有数据的进行整合……


◇飘堕的淡褶  QQ●147468
http://blog.windecember.cn

▲中国思科社区[GOOGLE网上论坛]
http://groups.google.com/group/cciecn
http://club.cn.yahoo.com/ccie

TOP

发新话题