公司数据库共享方案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

公司网站数据库

制作要求及统一技术说明

公司网站全体采用PHP源码、数据库采用MYSQL编写,实现统一构架,统一风格,统一管理。因为本公司网站属于大型集群网站,因此在建立数据库的时候需要采用一定的技术手段,来实现用户共享以及多数据库后期管理的问题。架构如下:

公司网站为了实现统一的数据管理跟共享用户信息功能,因此采用单点登录、目录服务技术,规定好统一的身份信息数据库,身份认证机制和接口,通过服务可以实现资源和信息的统一管理,保证了数据的一致性和完整性。此操作可以看作是一个特殊的数据库,为读、浏览和搜索进行了优化。目录可以用来保存描述性的、基于属性的信息,并且支持复杂的过滤搜索功能。属于轻量级目录访问协议。

我们按照树状信息组织模式,实现信息管理和服务接口的这种方法,可以有效的管理企业网络中的用户和各种资源,降低管理成本,保障网络的安全此服务系统分为两种方式:第一种是数据库,分布式数据库,能够进行数据描述,第二种则是访问和处理数据库有关的详细访问协议。具体如下图:

公司网站数据库技术说明:

采用UC整合技术来制作。大致包括server、client两个端。

server端负责接受client端发起的请求,并给出相应的处理。

client端是封装了一些server提供的接口的函数。通过这些函数来调用server提供的接口。

client端和server的通信全部通过这些client.php封装的函数来完成。

整合uc的时候我们需要设置client.php和uc.php这两个函数。client.php是主动向server端发起请求的接口封装函数。

uc.php刚好相反,它接受uc_server发起的请求和用户浏览器直接发起的请求。

这样我们就能在整合uc时实现server和client双向通信。而不是单一的client 发起,server接受。

具体的实现流程如下:

uc.php会接受uc_server发给它的通知。这些通知大概有用户改名、用户改密码、用户被删除、还有一些其他的。

另外一个最重要的是uc.php会接收用户浏览器发起的同步登录、退出请求。

uc.php在接收到这个请求的时候会把当前浏览器设置为登录或者退出状态。这就是同步登录和退出最重要的一个环节。

那么浏览器是在什么情况下会发起这个同步登录的请求呢?

我们看看uc的帮助文档。就能找到一个同步登录的接口。这个接口会在用户登录的时候,帐号密码验证成功以后被调用。

在整个程序完成过程中,在web上的应用登录状态是相对浏览器来说的。服务器端的请求是无法让浏览器处于登录状态的。

这个时候请求同步登录接口得到的返回是一些javascript请求的串。

类似于这样的

程序在得到这些字符串的时候要把他们输出到当前用户的浏览器上。这些html 代码被输出到用户浏览器上浏览器会发起请求,到src的地址。

这个地址就是我上面说的uc.php的地址。

比如说我们的uc下有A、B两个应用。那么在A登陆的时候。A在判断用户身份合法的时候,就会去调用uc的同步登录接口从而得到一个同步登录串,记住了。这个时候得到的这个同步登录串是B应用的。

此时A需要先把当前用户设置为已经登录状态。之后输出那段B的同步登录js 串。

用户的浏览器就会向B发起同步登录请求。

B的uc.php接收到这个请求后同样会把当前用户浏览器在B应用下设置为一登录状态。这样就实现了用户在A登录,在B也同时处于了登录状态。

同理如果还有C、D……等应用也是一样的原理。只是A在调用同步登录接口的时候就不是仅仅是得到B的同步登录串,他会同时得到B、C、D……的登录串。

这些js串在浏览器上逐个被执行了。其他的应用也就都登陆上去了。

同步退出和这个基本上是完全一样的原理,只是调用的同步退出的接口。uc.php 那里相应的也到了处理退出的代码。uc的整合原理基本上就是这样的。

我们就是采取这种形式用来实现共享用户数据库的方法,让各应用程序共享调用同一数据库里的用户信息,实现同步登陆和同步退出的功能。

首先我们需要安装一个ucenter。 ucenter所起到衔接各个站点会员注册,登录作用,ucenter的会员表中包含了我们需要整合的各个网站的所有会员,用户一旦在网站注册,程序先是把会员信息添加到了ucenter的会员表中,然后再添加到各个网站的会员表里面,而在登录的时候,程序是先去查询ucenter会员表中是否存在该用户,如果存在查询当前网站会员表中是否存在,如果不存在就证明该用户是通过另外一个站点注册的并且是在该站点第一次登录,就需要把该会员添加到当前站点的会员表中。上面所说的就是ucenter的会员整合机制了。

ucenter安装完之后,这时就需要去ucenter后台添加应用了,首先登录到ucenter 的后台,点击应用管理里面的添加应用,把你需要整合的站点信息添加进去。应用名称,应用的主URL,通信密钥,应用类型,应用接口文件名称是必填项目,点击提交后,下面就会生成相关的应用的UCenter 配置信息,这个配置信息等会儿会用到。ucenter的应用配置好后,就需要把整合ucenter需要用到的文件放你站点的根目录下面,文件包括:

A:api文件(像discuz,supesite,uchome里面都有的)。

B:还有一个inlude文件夹(里面只需要一个文件db_mysql.class.php:这个

是里面链接数据库操作的)

C:还有一个config.inc.php(可以改名叫config.php,这里改之后,就需要把api/uc.php里面的所有config.inc.php替换成config.php)

D:uc_client文件(在ucenter压缩包里面的这个文件拷贝过来就可以)文件夹放好之后,就要配置config文件,把上面在ucenter后台添加应用的时候生成的"应用的UCenter配置信息"复制到config.inc.php中,然后在刷新ucenter 后台的应用列表,看下通信状况,如果通信成功就证明该站点已经整合成功了。

现在,ucenter和站点的整合就已经结束了,但是还没有实现同步登录同步退出的功能,怎么来实现站点之前的同步登录同步退出呢?我们需要去修改某些文件,找到api下面的uc.php,这个就是实现同步登录同步退出操作的函数文件,找到synlogin里面的function,这个function就是同步登录的函数,这个函数里面可以进行数据库操作,保存站点中登录之后的cookie或者session。这里只是完成了分布式站点同步登录到主网站,那么如果让主网站也同步登录到其他分布站点,这就需要去修改序,这个代码在ucenter的接口文档里面有登录和注册的函数,如登录函数是uc_user_login($str_user_name, $str_user_pwd);需要注意的是要实现同步登录,是用js来实现登录的,ucenter程序是把同步登录站点的代码生成了js代码,$ucsynlogin = uc_user_synlogin($int_id);这就是同步登录的代码,ucenter有几个应用,就会生成多少个js代码,而这些代码就是去通知其他站点同步登录的,所以这些代码需要在页面上面执行才能实现同步登录功能。代码修改完了之后,需要把ucenter后台应用里面的同步登录和同步退出选择上。

同样的,同步退出和同步登录也一样的思想。

相关文档
最新文档