magento和discuz(ucenter)整合集成开发思路
discuz自带ucenter,主要就是用于和其他程序的通信.我们可以下载discuz的ucenter开发手册进行magento和discuz的集成.里面有一些ucenter的一些接口函数和参数说明,没有这个文档,最模板就无法进行下面:
1、把api和uc_client目录放在应用程序的跟目录.
2、修改自己的配置文件(application/config/config.ini),在最后加上下面的代码:代码如下
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入口文件,加入配置解析,代码如下:
代码如下
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 的
登录。
代码如下
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)整合集成开发思路的更多相关文章
- .net mvc通过ucenter和 discuz的整合,nopcommerce ucenter 插件的方式实现
discuz无疑是目前市面上最好的论坛之一,对于大多数公司来说,用discuz搭建一个论坛肯定是最节约成本的选择,然而我们的会员想要和discuz进行整合的话,只有两种荀泽,一种直接选用discuz的 ...
- 【SSH】---【Struts2、Hibernate5、Spring4集成开发】【SSH框架整合笔记】
Struts2.Hibernate5.Spring4集成开发步骤: 一.导入Jar包(基本的大致有41个,根据实际项目的需求自己添加) antlr-2.7.7.jar aopalliance.jar ...
- Spring+SpringMvc+Mybatis框架集成搭建教程三(框架整合测试程序开发)
框架整合测试程序开发 (1).在mysql数据库中创建t_user表,sql语句如下 CREATE TABLE `t_user` ( `id` bigint(20) NOT NULL AUTO_INC ...
- 【超全整理】J2EE集成开发环境MyEclipse使用心得汇总
一.首先我们为什么需要MyEclipse? 下面允许我做一些简要的介绍: 应该大家都知道另一个MyEclipse的近亲——Eclipse的优点:免费.程序代码排版功能.有中文汉化包.可增设许多功能强大 ...
- ucenter 整合外部网站,实现登录等操作
最近公司网站要出手机版,由于与论坛要有互通,实现会员的共享,由于对discuz不熟悉,起先考虑的是直接读取discuz的用户表,然后进行判断等操作,发现过于复杂,而且安全也不好. 前一段时间进行过论坛 ...
- IDE 集成开发环境
集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器.编译器.调试器和图形用户界面工具.集成了代码编写功能 ...
- ENVI/IDL与ArcGIS集成开发的三种途径
转载:本文来自ENVI5.0-IDL8.2系列产品白皮书_201303.PDF(Esri中国官网可下载)中P7-P10 ENVI 是一个非常开放的平台,提供一个健全的函数库,几乎涵盖ENVI 平台大部 ...
- Android常见开发思路
开发思路 刷新: 重新获取数据 清空list 更新适配器 关闭进度条. 加载更多 1. 重新获取数据 添加list 更新适配器 添加轮播条. 自己设计轮播条View 引入lib库文件 设置轮播条数据. ...
- 织梦系统与discuz论坛整合方法
如何完成dedecms模板系统与discuz论坛整合呢? 这里的整合指会员信息,会员登陆.退出的同步:论坛信息的引用:等等. 首先,我们先来安装织梦(dedecms)系统. 然后,我们在网站根目录下建 ...
随机推荐
- C++文件读写练习
编写一个程序,统计data.txt文件的行数,并将所有行前加上行号后写到data1.txt文件中. 算法提示: 行与行之间以回车符分隔,而getline()函数以回车符作为终止符.因此,可以采用get ...
- Window["aaa"]这个在JS里是什么意思?
答案:定义一个全局的变量 aaa,这个的方式是数组,实际上是等于 window.aaa
- C#入门篇6-9:字符串操作 不值一提的函数【不看也行】
// 判断输入的是否全是数字:返回结果:true:全是数字:false:有字幕出现 public static bool Isaccord1(string str) { bool bl = true; ...
- 关于Android的onResume的2点体会(程序切换之后恢复状态)
Android有点儿差劲:按home键之后,立即长按home键选择程序切换回来,居然activity就跑回初始状态去了. 我的程序里面有2个webview,2个按钮,我做到把他们都恢复了. 1 web ...
- HDU 4405 Aeroplane chess 概率DP 难度:0
http://acm.hdu.edu.cn/showproblem.php?pid=4405 明显,有飞机的时候不需要考虑骰子,一定是乘飞机更优 设E[i]为分数为i时还需要走的步数期望,j为某个可能 ...
- 一步步学习JSON
什么是Json json是JavaScript Object Notation(javascript对象表示法)的缩写,是一种轻量的数据格式,是基于javascript的一个子集.与XML一样,jso ...
- 宜家的幸福生活,源于K2 BPM的支撑
很久很久以前,有一篇很火的文章在各大网站被疯狂转载<一个在北欧生活10年的MM,告诉你为什么北欧全球幸福指数第一>,开头第一段就已经让人羡慕嫉妒恨了. "下午的四.五点钟,北欧人 ...
- Xlistview的values下的界面
<!-- 下拉刷新,上拉加载更多 --> <string name="xlistview_header_hint_normal">下拉刷新</s ...
- 100个iOS开发/设计面试题汇总
常见问题 你昨天/这周学习了什么? 你为什么热衷于软件开发? 你对哪一种控制系统比较熟悉? 是否参与过GitHub项目? 是否参与过GitHub或其他同类型网站的iOS开源项目? 请描述一下你的iOS ...
- java基础-001
一.区分final . finally . finalize 1.关键字final Java语言的关键字final可以用于变量.类或方法,但是含义会有所不同. -用于变量:一旦初始化,变量值就不能修 ...