magento和discuz(ucenter)整合集成开发思路

discuz自带ucenter,主要就是用于和其他程序的通信.我们可以下载discuz的ucenter开发手册进行magento和discuz的集成.里面有一些ucenter的一些接口函数和参数说明,没有这个文档,最模板就无法进行下面:

1、把api和uc_client目录放在应用程序的跟目录.

2、修改自己的配置文件(application/config/config.ini),在最后加上下面的代码:代码如下

[ucenter]
uc.UC_ON = 0
uc.UC_CONNECT = mysql
uc.UC_DBHOST = localhost
uc.UC_DBUSER = root
uc.UC_DBPW = vertrigo
uc.UC_DBNAME = ucenter
uc.UC_DBCHARSET = utf8
uc.UC_DBTABLEPRE = ucenter.uc_
uc.UC_KEY = 123456789
uc.UC_API = http://localhost/comsenz/ucenter15
uc.UC_CHARSET = utf-8
uc.UC_IP =
uc.UC_APPID = 1

复制代码

上面的各项一看就知道啥意思了,uc.UC_ON是系统中是否开启ucenter同步的开关,1:打开,0:关闭。注意uc.UC_KEY必须和 ucenter中设置

应用的key一致不然会显示通信失败。

3、修改index.php入口文件,加入配置解析,代码如下:

代码如下

//ucenter配置
Zend_Registry::set(‘UC_ON‘,$config->ucenter->uc->UC_ON);
if (Zend_Registry::get(‘UC_ON‘)) {
    define(‘UC_CONNECT‘, $config->ucenter->uc->UC_CONNECT);         // mysql 是直接连接的数据库, 为了效率, 建议采用 mysql
    define(‘UC_DBHOST‘, $config->ucenter->uc->UC_DBHOST);           // UCenter 数据库主机
    define(‘UC_DBUSER‘, $config->ucenter->uc->UC_DBUSER);           // UCenter 数据库用户名
    define(‘UC_DBPW‘, $config->ucenter->uc->UC_DBPW);               // UCenter 数据库密码
    define(‘UC_DBNAME‘, $config->ucenter->uc->UC_DBNAME);           // UCenter 数据库名称
    define(‘UC_DBCHARSET‘, $config->ucenter->uc->UC_DBCHARSET);     // UCenter 数据库字符集
    define(‘UC_DBTABLEPRE‘, $config->ucenter->uc->UC_DBTABLEPRE);   // UCenter 数据库表前缀
    define(‘UC_KEY‘, $config->ucenter->uc->UC_KEY);                 // 与 UCenter 的通信密钥, 要与 UCenter 保持一致
    define(‘UC_API‘, $config->ucenter->uc->UC_API);                 // UCenter 的 URL 地址, 在调用头像时依赖此常量
    define(‘UC_CHARSET‘, $config->ucenter->uc->UC_CHARSET);         // UCenter 的字符集
    define(‘UC_IP‘, $config->ucenter->uc->UC_IP);                   // UCenter 的 IP
    define(‘UC_APPID‘, $config->ucenter->uc->UC_APPID);             // 当前应用的 ID
    include ‘./uc_client/client.php‘;
}

复制代码

好了,准备工作完成了,下面要进行程序开发了。

4、登陆同步的实现,下面的代码有点长,因为我是开始没有集成ucenter,后来新增的ucenter,所以做了兼容性,兼顾了没有开启ucenter 的

登录。

代码如下

//如果开启了ucenter
if ($this->is_uc_on) {
    //通过接口判断登录帐号的正确性,返回值为数组
    list($uid, $username, $password, $email) = uc_user_login($username, $password);
    if($uid > 0) {
        //判断用户是否存在于用户表,不存在则跳转到激活页面
        if($this->user->checkUserValid($username)) {
             //将这些用户信息写入cookie,用于激活页面
             @setcookie(‘zf_auth‘, uc_authcode($uid."t".$username."t".$password."t".$email, ‘ENCODE‘),time()+3600,‘/‘);
             $this->view->securl = $this->view->domain.‘/user/activation‘;
             $this->view->msg = ‘您需要需要激活该帐号,才能进入本应用程序!‘;
             echo $this->view->render(‘success.php‘);
             exit;
        }
        //用户登陆成功,设置 Cookie
        $udata = array(‘id‘=>$uid,‘username‘=>$username,‘role‘=>‘member‘);
        $expire = 86400;
        $this->setCookie($udata,$expire);
                  
        //生成同步登录的代码
        $ucsynlogin = uc_user_synlogin($uid);
        $this->view->securl = $this->view->domain;
        $this->view->msg = ‘登录成功,正在跳转回首页!‘;
        echo $this->view->render(‘success.php‘);
    } elseif($uid == -1) {
        $this->view->error = "用户不存在,或者被删除!";
        echo $this->view->render(‘error.php‘);exit;
    } elseif($uid == -2) {
        $this->view->error = "密码错误!";
        echo $this->view->render(‘error.php‘);exit;
    } else {
        $this->view->error = "系统错误,请稍候再试!";
        echo $this->view->render(‘error.php‘);exit;
    }
}
else    //没有采用uc的登录方式
{
    $dbAdapter = Zend_Registry::get(‘dbAdapter‘);
    $authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter);
    //$authAdapter->setTableName(‘bg_user‘);
    $authAdapter->setTableName(Zend_Registry::get(‘dbprefix‘).‘user‘);
    $authAdapter->setIdentityColumn(‘username‘);
    $authAdapter->setCredentialColumn(‘password‘);
  
    $authAdapter->setIdentity($username);
    $authAdapter->setCredential($password);
  
    $auth = Zend_Auth::getInstance();
    $result = $auth->authenticate($authAdapter);
    if($result->isValid()){
        $data = $authAdapter->getResultRowObject(null,‘password‘);
        //$auth->getStorage()->write($data);
        //写入cookie
        $udata = array(‘id‘=>$data->id,‘username‘=>$data->username,‘role‘=>$data->role);
        $expire = 86400;
        $this->setCookie($udata,$expire);
        $this->view->securl = $this->view->domain;
        $this->view->msg = ‘登录成功,正在跳转回首页!‘;
        echo $this->view->render(‘success.php‘);
    }else{
        //用户名密码
        $this->view->error = "用户名密码错误!";
        echo $this->view->render(‘error.php‘);
        exit();
    }
}

好了,同步登录完成,接着就仿照上面的注销,修改密码,修改用户资料等都可以实现了。

时间: 2024-08-03 03:15:23

magento和discuz(ucenter)整合集成开发思路的相关文章

.net mvc通过ucenter和 discuz的整合,nopcommerce ucenter 插件的方式实现

discuz无疑是目前市面上最好的论坛之一,对于大多数公司来说,用discuz搭建一个论坛肯定是最节约成本的选择,然而我们的会员想要和discuz进行整合的话,只有两种荀泽,一种直接选用discuz的数据库的用户表作为自己系统的用户表(这种不现实,我如果是mssql,或者是oricle怎么办呢?),第二种就是使用discuz为了解决大家这中需求而提出的ucenter技术,目前小米论坛就是采用的这种技术,下面我就为大家介绍一下.net下使用ucenter的注意细节. 首先引入的第三方已经开发好的u

项目整合Discuz UCenter

虽然个人非常不喜欢discuz,但没办法,市场就是力量,特别是对于整合discuz论坛的朋友,你如果不想用两套系统的话,整合UCenter是必然的事,虽然无趣,但不得不这么做. 一.准备工作 1.uc api说明书,通读全文.参考http://faq.comsenz.com/library/UCenter/introduction/introduction_list.htm 2.uc 后台添加应用说明.参考http://faq.comsenz.com/viewnews-506(官方) http:

Spring+SpringMvc+Mybatis框架集成搭建教程三(框架整合测试程序开发)

框架整合测试程序开发 (1).在mysql数据库中创建t_user表,sql语句如下 CREATE TABLE `t_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `user_name` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARS

Lync二次开发思路

Lync作为目前最为强大的企业及时通信工具,目前被众多大企业所使用(这里就废话去介绍了),其与硬件及自家产品的集成非常强大.但是其即时通信功能,尤其是国内的用户大多习惯了QQ的截图.消息记录.离线留言等功能,另外如何更好的与企业现有的业务系统进行整合,这都需要进行一定的开发工作. 通常Lync的开发技术路线有两种:一种是无UI开发模式,另一种是以插件形式(且称为有UI模式). 无UI模式:即自己重新开发Lync客户端界面,后台进程运行原有的Lync进程,通过Lync SKD去调用响应的模块. 有

ucenter 整合同步登录的内部实现原理

1.用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证. 2.如果验证成功,将调用位于uc_client下client.php文件中的函数uc_user_synlogin,在这个函数中调用 uc_api_post('user', 'synlogin', array('uid'=>$uid)). 3.然后这个函数后向Ucenter的index.php传递数据,index.php接受传

Magento和OpenERP,OPENERP二次开发,openerp电子商务系统,电子商务系统

(方案一) (方案二) Magento:(麦进斗) 是一套专业开源的电子商务系统.Magento设计得非常灵活,具有模块化架构体系和丰富的功能.易于与第三方应用系统无缝集成.其面向企业级应用,可处理各方面的需求,以及建设一个多种用途和适用面的电子商务网站. 包括购物.航运.产品评论等等,充分利用开源的特性,提供代码库的开发,非常规范的标准,易于与第三方应用系统无缝集成. OpenERP:模块有大约2000个,涵盖了各行各业各领域的管理要求.系统的标准安装包中的功能模块有:销售管理(Sales m

11款PHP集成开发环境

最近准备用PHP搭建一款小说网站,效果仿照我爱书屋www.52shu.org.工欲善其事,比先利其器,于是现在网上收罗了一番PHP的开发工具 , 汇总一下 . ----------------------------------此为背景 -----------------------------------------------------------------------------------------------------------------------------------

集成开发环境(IDE)

集成开发环境(Integrated Development Environment,简称IDE,也称为Integration Design Environment.Integration Debugging Environment)是一种辅助程序开发人员开发软件的应用软件. IDE通常包括编程语言编辑器.自动构建工具.通常还包括调试器.有些IDE包含编译器/解释器,如微软的Microsoft Visual Studio,有些则不包含,如Eclipse.SharpDevelop等,这些IDE是通过

PHP 集成开发环境比较

做了这么些年技术,没有养成记录和积累的习惯.现在乐于开源和分享,却停笔踌躇,不知该从何处说起.开通博客也有一段时间了,一直没有写出一篇像样的技术文章,想了很久觉得应该循序渐进,从搭建和配置开发调试环境开始. 主流的常见 PHP 集成开发环境不少,如:Zend Studio.PhpStorm.Eclipse.NetBeans.Dreamweaver 等等,各有各的优点和缺点. Zend Studio:是 Zend Technologies 公司基于大名鼎鼎的 Eclipse 二次开发 IDE,是目