本页主题: 动易与其他程序的万能的整合-思路提供 打印 | 加为IE收藏 | 复制链接 | 收藏主题 | 上一主题 | 下一主题

启天部落
级别: 荣誉会员


精华: 1
发帖: 33
威望: 47 点
金钱: 114 RMB
贡献值: 0 点
好评度: 0 点
在线时间:5(小时)
注册时间:2005-08-25
最后登录:2005-09-23

 动易与其他程序的万能的整合-思路提供

以前的整合,主要思路是这样的:

1:数据库整合,把两个数据库合为一个数据库,增加一个新的数据库链接文件来负责公共数据的连接(4.03以前的版本的整合形式)

2:通行登陆,在两个程序的任意一边注册以后,同时往另一个数据库写入注册信息,或者干脆就是同一个数据库,在注册的地方加上另一个数据库的字段写入。登陆的时候也是,在一边登陆的时候要写入另一个程序的Cookies信息。

以上的方式整合,应该说是比较流畅,而且也的的确确称得上整合。

但是面对动网这样的采用Cookies+Session双重验证,而且还有实时更新的动态密码之后,原来的通行登陆就有点力不从心了,即使解决了,整合要动的手术也太多。

所以逼出一个新的思路,也就是我现在提供的动易2005+动网7.x版整合的这个思路:

1:自动注册、登陆和同步资料:

所有的注册登陆都只在一边进行,不用考虑另一边的问题。比如你不管在动易注册还是在动网注册,都是从动易的注册界面填写信息,然后写入动易的数据库,然后完成动易的登陆,整个过程对动网的数据库和Cookies没有做任何的处理。如果你一直不上论坛,你也就一直是只注册了一边,只登陆了一边。

但是当你第一次进入论坛的时候,论坛首先会检测到你在论坛还没有登陆,同时发现Cookies里有动易已经登陆的Cookie信息。于是从动易的Cookies读取出用户的信息,然后对动网的数据库进行查询,如果已经注册过了,那么就自动完成你的登陆过程(这个步骤只要把动网的登陆过程做少许改动就完成了)。另一种情况,虽然已经注册过了,但是密码并不一样,因为所有注册登陆都已经交给动易来完成了,那么动网采用不同的密码已经没有意义了,于是自动把动网数据库里的密码更新成和动易一样的,然后还是调用动易的Cookies,然后完成登陆;第三种情况就是发现你在动网论坛这边更本没有注册,这时系统就对必须的字段赋予默认值,用户名和密码保留即可,为你完成论坛的注册,然后完成登陆。

这样一来,改动几乎全部集中到了一个程序上——动网,而且改动也非常少。假设你在整合完动网论坛之后还想整合一个其它的程序,也是一样的,首先把你要整合的程序的注册、登陆都转向到动易,然后当用户在动易登陆之后,第一次进入你的程序的时候,读取出动易的Cookies作为登陆信息,然后替用户完成登陆(必要时加上注册),登陆以后就不再需要动易的Cookies了,因为你的程序已经写入了自己的Cookies和Session。这样登陆的效果要比原来的方式好得多,因为是目标程序(比如动网)自己完成的登陆,Cookies和Session的信息很完整,也就不会出现刷新后被踢掉啊,发帖的时候被踢掉之类的问题。

2:整合多套程序,无需额外处理:

无论整合多少个程序,原理都完全一样,并不会因为整合了几个甚至十几个程序,而使得注册的时候要反复操作很多个数据库。

至于注销,是最简单的,因为每套程序基本上都是通过一个Logout文件来实现退出,即不需要参数,也不需要提交信息。这种情况下,连正式访问一下那个页面都不必要,可以用<iframe>来饮用一下那个注销页面,自动就把登陆信息清理得干干净净。如果显你不喜欢Iframe,还可以用script src的方式来调用那个注销文件,效果都是一样的。

3:整合方案中的关键文件:

这套思路,最核心的部分就是找到你要整合的程序的核心代码里那段判断用户登陆的函数,在它判断用户未登陆的地方加上一个对动易cookies的读取,如果读取到了信息,则调用一个从你的程序的注册和登陆文件抄来的函数就可以完成自动注册和登陆了。

这样做还有一个好处就是你只要保证动易的数据库即可,其它的数据库就算资料和动易不统一也没关系。因为只要用户已访问就会自动同步了。

这里把我的思路写出来,希望能起到抛砖引玉的作用,有更多的各种语言的能手写出各种程序的整合来:)

4:动易的信息接口

我这里提供动易的Cookies基本信息:

Cookies标示:动易用Site_Sn表示这是动易的Cookies,Site_Sn的值等于服务器名(比如www.asp163.net)加上动易的安装目录(比如PowerEasy)组合的字串:

www.asp163.net/PowerEasy/

然后整个字串改为小写,并去掉"."和"/"等符号,在上面这个例子中最后得到的是:

Site_Sn = "wwwasp163netpowereasy"

这也就是我的整合要求大家把论坛放在动易子目录下的原因,因为这样可以在论坛的文件中得到当前脚本的路径:www.asp163.net/powereasy/bbs/ 然后把 "/bbs/"和"/"还有"."去掉,就得到了和动易一样的Site_Sn,在任何你需要的时候,就可以通过下面的方式读取动易的Cookies:

UserID = Request.Cookies(Site_Sn)("UserID")
UserName = Request.Cookies(Site_Sn)("UserName")
UserPassword = Request.Cookies(Site_Sn)("UserPassword")
CookieDate = Request.Cookies(Site_Sn)("CookieDate")

然后用到你的程序中去。

5:把程序装到动易以外的目录

如果你不想把程序装在动易的目录下,那么你也可以在装完动易之后得到你的 strInstallDir,比如上面的例子,strInstallDir = "/PowerEasy"

那么你可以这样写:

Site_Sn = Request.ServerVariables("SERVER_NAME") & "/PowerEasy/"

Site_Sn = LCase(Replace(Replace(Site_Sn,".",""),"/",""))

得到的结果也是一样的。这样你就可以把你的程序装到动易目录以外的地方了。

6:整合非ASP的程序:

由于自动注册、登陆和同步资料是由你的程序自动完成的,因此并不受ASP语言限制,比如你要整合的是PHP程序,你同样可以用PHP的语句来读取动易的Cookies和Site_Sn,然后编写你自己的PHP函数来完成在你的系统的注册、登陆和资料更新,不管是AC、MSSQL还是MSQL或者文本数据,都并不受动易的影响。当你的程序更新升级时,你只要在升级完后把相应的修改再做一遍,整合继续支持,并不是说动易2005支持Dvbbs7.1.0,就不支持Dvbbs8.0,不管你升级到什么版本,整合还是一样的
启天建站学院欢迎您
http://www.7tsky.com<br>
我希望有一天我能用鼠标双击我的钱包,然后选中一张100元,按住“ctrl-c”接着不停的“ctrl-v”。
顶端 Posted: 05-09-05 09:47 | [楼 主]
Mike
群熵工程师
级别: 管理员


精华: 7
发帖: 951
威望: 714 点
金钱: 6601 RMB
贡献值: 0 点
好评度: 611 点
在线时间:1405(小时)
注册时间:2003-11-28
最后登录:2018-04-23

 

好文章!以前我的整合策略是注册时注册到两个用户表里,登录时启动两边的Cookie。显然文章中的办法比这个还方便。
顶端 Posted: 05-09-05 14:06 | 1 楼
Mike
群熵工程师
级别: 管理员


精华: 7
发帖: 951
威望: 714 点
金钱: 6601 RMB
贡献值: 0 点
好评度: 611 点
在线时间:1405(小时)
注册时间:2003-11-28
最后登录:2018-04-23

 

这篇文章的意思,我总结一下,就是:
对于A1,A2,...,An个系统的整合,以A1为主,则A2,A3,...,An系统的注册链接都修改到A1的注册链接;在A2,A3,...,An系统中处理登录用户Cookie的时候,增加代码,首先检查Cookie里是不是有了A1系统的登录Cookie,如果没有,当然是按游客那样处理。如果有,根据此Cookie查询自己系统中的用户表;如果有用户记录,直接提出用户信息,写Cookie到客户端,这样用户就登录到论坛了;如果没有,就要到自己系统的用户表里插入用户记录一条,然后写Cookie到客户端,用户就这样注册并登录了。

这个办法也是计算机编程的有名的“懒惰编程”技巧,就是在需要的时候才会去载入相关数据(A1系统用户第一次登录Am系统时才注册到Am系统)。

不知道我这样理解是不是作者的意思。
顶端 Posted: 05-09-07 20:16 | 2 楼
musik
级别: 骑士


精华: 0
发帖: 21
威望: 119 点
金钱: 138 RMB
贡献值: 0 点
好评度: 11 点
在线时间:11(小时)
注册时间:2005-09-09
最后登录:2006-07-10

 

谢谢
顶端 Posted: 05-09-09 17:34 | 3 楼
启天部落
级别: 荣誉会员


精华: 1
发帖: 33
威望: 47 点
金钱: 114 RMB
贡献值: 0 点
好评度: 0 点
在线时间:5(小时)
注册时间:2005-08-25
最后登录:2005-09-23

 

忘记文章的出处了,很多地方都有转载
启天建站学院欢迎您
http://www.7tsky.com<br>
我希望有一天我能用鼠标双击我的钱包,然后选中一张100元,按住“ctrl-c”接着不停的“ctrl-v”。
顶端 Posted: 05-09-09 22:58 | 4 楼
帖子浏览记录 版块浏览记录
群熵信息 - 技术讨论区 » WEB脚本技术进阶

Total 0.015571(s) query 5, Time now is:06-18 08:11, Gzip enabled
Powered by PHPWind v6.3.2 Certificate Code © 2003-08 PHPWind.com Corporation

上海服务器租用 杭州世导双线服务器托管 云主机 VPS