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();
    }
}

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

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

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

    discuz无疑是目前市面上最好的论坛之一,对于大多数公司来说,用discuz搭建一个论坛肯定是最节约成本的选择,然而我们的会员想要和discuz进行整合的话,只有两种荀泽,一种直接选用discuz的 ...

  2. 【SSH】---【Struts2、Hibernate5、Spring4集成开发】【SSH框架整合笔记】

    Struts2.Hibernate5.Spring4集成开发步骤: 一.导入Jar包(基本的大致有41个,根据实际项目的需求自己添加) antlr-2.7.7.jar aopalliance.jar ...

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

    框架整合测试程序开发 (1).在mysql数据库中创建t_user表,sql语句如下 CREATE TABLE `t_user` ( `id` bigint(20) NOT NULL AUTO_INC ...

  4. 【超全整理】J2EE集成开发环境MyEclipse使用心得汇总

    一.首先我们为什么需要MyEclipse? 下面允许我做一些简要的介绍: 应该大家都知道另一个MyEclipse的近亲——Eclipse的优点:免费.程序代码排版功能.有中文汉化包.可增设许多功能强大 ...

  5. ucenter 整合外部网站,实现登录等操作

    最近公司网站要出手机版,由于与论坛要有互通,实现会员的共享,由于对discuz不熟悉,起先考虑的是直接读取discuz的用户表,然后进行判断等操作,发现过于复杂,而且安全也不好. 前一段时间进行过论坛 ...

  6. IDE 集成开发环境

    集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器.编译器.调试器和图形用户界面工具.集成了代码编写功能 ...

  7. ENVI/IDL与ArcGIS集成开发的三种途径

    转载:本文来自ENVI5.0-IDL8.2系列产品白皮书_201303.PDF(Esri中国官网可下载)中P7-P10 ENVI 是一个非常开放的平台,提供一个健全的函数库,几乎涵盖ENVI 平台大部 ...

  8. Android常见开发思路

    开发思路 刷新: 重新获取数据 清空list 更新适配器 关闭进度条. 加载更多 1. 重新获取数据 添加list 更新适配器 添加轮播条. 自己设计轮播条View 引入lib库文件 设置轮播条数据. ...

  9. 织梦系统与discuz论坛整合方法

    如何完成dedecms模板系统与discuz论坛整合呢? 这里的整合指会员信息,会员登陆.退出的同步:论坛信息的引用:等等. 首先,我们先来安装织梦(dedecms)系统. 然后,我们在网站根目录下建 ...

随机推荐

  1. SELECTION-SCREEN 文本丢失

    最近有点无聊....随便找点东西填了... 自从系统上线,经常出现程序的的文本丢失,然后选择界面就变成英文的了....一直在出现,就是解决不了,不知道到底是哪里的问题 严重怀疑是服务器上文件丢失... ...

  2. nyoj-746

    整数划分(四) 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近 ...

  3. 10个必备的移动UI设计资源站(转)

    创建移动设计模式是非常重要的一步,记住!这是为移动设备设计而不是web.不仅仅是移动屏幕远小于普通的电脑屏幕,关键是鼠标和键盘已经被手指替代了! 当然还有更重要的,说起来很苦逼,我们再也不能使用一种模 ...

  4. linq.js

    在做后台开发的时候,总是会碰到将拿到手的数据进行条件校验,而这些数据又不仅仅是单纯的一个,有时候会是一串大数据,需要自己在后台处理进而展示到前台页面上,酱紫自己第一反应就是使用for循环来遍历,并把所 ...

  5. 修改WAMPServer中MySql中文乱码的方法

    修改MySql的配置文件my.ini,在[client]段落增加:default-character-set=utf8;在[mysqld]段落增加:character_set_server=utf8; ...

  6. iOS App Icon图标 尺寸规范

    Commit to AppStore:1024*1024 //for App IconIcon-60@3x.png:180*180 //iPhone 6 Plus (@3x)Icon-60@2x.pn ...

  7. UVALive 7297 Hounded by Indecision BFS

    题目链接:Hounded by Indecision 题意:map中给出小偷的位置,警察的位置.警察有一只狗,开始的时候警察和狗一起行动,也就是看做一个格子,当警察遇见小偷走过的格子时,狗就会嗅到它的 ...

  8. ANT-build.xml编译文件详解

    Ant 开发Ant的构建文件当开始一个新的项目时,首先应该编写Ant构建文件.构建文件定义了构建过程,并被团队开发中每个人使用.Ant构建文件默认命名为build.xml,也可以取其他的名字.只不过在 ...

  9. AJAX初步

    1.什么是AJAX 客户端与服务器,可以在[不必刷新整个浏览器]的情况下,与服务器进行异步通讯的技术,即,AJAX是一个[局部刷新]的[异步]通讯技术: AJAX不是全新的语言,是2005年Googl ...

  10. GITHUB的初次使用

          对于一个从未用过  接触过github的人来说,达到一个最终的成功真可谓是历经千辛万苦.在这里真的感谢我们的小组组长,我遇到的问题除了自己的查到的,剩 下的基本上都是组长帮我解决的.当所有 ...