文档章节

整合 ucenter 注册自动激活

斑驳
 斑驳
发布于 2014/09/09 13:43
字数 309
阅读 4500
收藏 4

应用整合 UCenter,同步注册到 Discuz 的用户,在 Discuz 登录时得手动激活,用户体验很不好,不过解决方法很简单~
修改应用下的 ./uc_client/model/user.php 文件,大概在 138 行(UCenter 1.6)处的 function add_user 函数里添加代码:

function add_user($username, $password, $email, $uid = 0, $questionid = '', $answer = '', $regip = '') {
	$regip = empty($regip) ? $this->base->onlineip : $regip;
	$salt = substr(uniqid(rand()), -6);
	$password = md5(md5($password).$salt);
	$sqladd = $uid ? "uid='".intval($uid)."'," : '';
	$sqladd .= $questionid > 0 ? " secques='".$this->quescrypt($questionid, $answer)."'," : " secques='',";
	$this->db->query("INSERT INTO ".UC_DBTABLEPRE."members SET $sqladd username='$username', password='$password', email='$email', regip='$regip', regdate='".$this->base->time."', salt='$salt'");
	$uid = $this->db->insert_id();
	$this->db->query("INSERT INTO ".UC_DBTABLEPRE."memberfields SET uid='$uid'");
	// BEGIN
	$this->db->query("INSERT INTO ".DISCUZ_DBTABLEPRE."common_member SET uid='$uid', username='$username', password='$password', email='$email', adminid='0', groupid='10', regdate='".$this->base->time."', credits='0', timeoffset='9999'");
	$this->db->query("INSERT INTO ".DISCUZ_DBTABLEPRE."common_member_status SET uid='$uid', regip='$regip', lastip='$regip', lastvisit='".$this->base->time."', lastactivity='".$this->base->time."', lastpost='0', lastsendmail='0'");
	$this->db->query("INSERT INTO ".DISCUZ_DBTABLEPRE."common_member_profile SET uid='$uid'");
	$this->db->query("INSERT INTO ".DISCUZ_DBTABLEPRE."common_member_field_forum SET uid='$uid'");
	$this->db->query("INSERT INTO ".DISCUZ_DBTABLEPRE."common_member_field_home SET uid='$uid'");
	$this->db->query("INSERT INTO ".DISCUZ_DBTABLEPRE."common_member_count SET uid='$uid', extcredits1='0', extcredits2='0', extcredits3='0', extcredits4='0', extcredits5='0', extcredits6='0', extcredits7='0', extcredits8='0'");
	// END
	return $uid;
}

注意这些表都是 Discuz 的表,不是 UCenter 的表,不能使用 UC_DBTABLEPRE ! 我自己在 UCenter 配置文件 config.inc.php 中定义了 DISCUZ_DBTABLEPRE:

define('DISCUZ_DBTABLEPRE', '`ultrax`.pre_');



本文转载自:http://www.ngro.org/tech/ucenter-synclogin-activation.html

上一篇: Javascript 笔记
下一篇: php 正则匹配中文
斑驳
粉丝 12
博文 57
码字总数 9410
作品 0
深圳
高级程序员
私信 提问
加载中

评论(6)

hansunshine
hansunshine
如果是phpsso的同步,要修改的文件夹:phpsso_server\api\uc_client\model\user.php
因为配置文件在:phpsso_server\caches\configs,后台修改会覆盖
所以要加一行 udefine('DISCUZ_DBTABLEPRE', '`test_nexhome_bbs`.pre_');
// BEGIN 注册免激活
define('DISCUZ_DBTABLEPRE', '`test_nexhome_bbs`.pre_');
$this->db->query("INSERT INTO ".DISCUZ_DBTABLEPRE."common_member SET uid='$uid', username='$username', password='$password', email='$email', adminid='0', groupid='10', regdate='".$this->base->time."', credits='0', timeoffset='9999'");
$this->db->query("INSERT INTO ".DISCUZ_DBTABLEPRE."common_member_status SET uid='$uid', regip='$regip', lastip='$regip', lastvisit='".$this->base->time."', lastactivity='".$this->base->time."', lastpost='0', lastsendmail='0'");
$this->db->query("INSERT INTO ".DISCUZ_DBTABLEPRE."common_member_profile SET uid='$uid'");
$this->db->query("INSERT INTO ".DISCUZ_DBTABLEPRE."common_member_field_forum SET uid='$uid'");
$this->db->query("INSERT INTO ".DISCUZ_DBTABLEPRE."common_member_field_home SET uid='$uid'");
$this->db->q
hjl416148489
hjl416148489
我解决了激活失败的问题
楼主的方法试了,没用的
我这边只要
function add_user($username, $password, $email, $uid = 0, $questionid = '', $answer = '', $regip = '') {
}
中,加入以下代码即可
$this->db->query("INSERT INTO ".DISCUZ_DBTABLEPRE."common_member SET uid='$uid', username='$username', password='$password', email='$email', adminid='0', groupid='10',credits='0'");
若是不成功,请到素材火http://www.sucaihuo.com/联系我
Lukerr
Lukerr
找了半天找到这里,问题跟楼上一样
青丝成雪

引用来自“青丝成雪”的评论

你好,请问下我按照这种方式修改好,没有生效。我手动到sql中执行上面的一条插入语句:
INSERT INTO discuz.pre_common_member_field_forum SET uid='11',discuz是我的数据库名,
结果提示:Field 'medals' doesn't have a default value,看了下数据库这张表该字段的定义是
`medals` text NOT NULL,确实不为空,那这个我在安装的时候或别的地方需要配置什么才能解决这个问题呢?
谢谢..

引用来自“斑驳”的评论

你是哪个版本的 Dsicuz?这段代码我前几个月用了一下是没问题的,你再试试吧
用的是3.2。但是我后面就自己在后面加语句,报哪个字段的错我就加如set medals='',直到不报错为止,但最后还是无法自动激活,非要先登陆一次才行
斑驳
斑驳

引用来自“青丝成雪”的评论

你好,请问下我按照这种方式修改好,没有生效。我手动到sql中执行上面的一条插入语句:
INSERT INTO discuz.pre_common_member_field_forum SET uid='11',discuz是我的数据库名,
结果提示:Field 'medals' doesn't have a default value,看了下数据库这张表该字段的定义是
`medals` text NOT NULL,确实不为空,那这个我在安装的时候或别的地方需要配置什么才能解决这个问题呢?
谢谢..
你是哪个版本的 Dsicuz?这段代码我前几个月用了一下是没问题的,你再试试吧
青丝成雪
你好,请问下我按照这种方式修改好,没有生效。我手动到sql中执行上面的一条插入语句:
INSERT INTO discuz.pre_common_member_field_forum SET uid='11',discuz是我的数据库名,
结果提示:Field 'medals' doesn't have a default value,看了下数据库这张表该字段的定义是
`medals` text NOT NULL,确实不为空,那这个我在安装的时候或别的地方需要配置什么才能解决这个问题呢?
谢谢..
discuz ucenter jsp项目整合

各位前辈,请问有谁做过discuz-ucenter-api-for-java 整合到JSP项目的对吗?我有几个问题请教下: 我是用的ucenter来同步我的jsp项目和discuz中的会员,现在的情况是在我的项目中登陆、退出,...

青丝成雪
2014/12/22
314
0
用了Discuz和Ucenter,在自己的程序注册并自动登录,却没有同步登录Discuz。

用了Discuz和Ucenter,在自己的程序注册并自动登录,却没有同步登录Discuz。 我网站是自己开发的,论坛和用户中心用的是discuz和ucenter。 现在在网站上注册,注册完会自动登录网站,但是没有...

王道中强流
2014/07/23
900
0
第三方从UC账号免激活异步登录DX 2.5 方法

最近刚好需要一个结合UC并使用了DX2.5的方案,发现DX2.5官方只提供允许登录自动激活的功能(这选项在DX管理中心->站长 -> UCENTER设置),等于通过UC注册的账号,仍必须在DX2.5登录一次,才能...

同一种调调
2012/10/16
0
1
dedecms v5.7 整合discuz x3.2 双向同步登录退出(2016年4月2号)

一,先安装织梦与dz论坛,dz安装时,把uc也一起安装.安装好后,进论坛后台,ucenter中心,应用管理,就会看到id号为1的应用,并且通信成功 如果通信不成功.就点击id为1应用,点击 后面的编辑,注意,应用...

越野小生
2016/04/02
60
0
兄弟们帮下忙我要用ucenter整合www.071001.com与www.cfhb.info

兄弟们帮下忙我要用ucenter整合 www.071001.com与 www.cfhb.info 相互之间可以登录 但是却要激活账号,,要怎样才能不激活账号自动登录啊。。。。。。。。...

瑞风
2012/01/11
271
2

没有更多内容

加载失败,请刷新页面

加载更多

Redux

Redux概念 Redux = Reducer + Flux,数据层框架,将所有数据都存储到store中 Redux的工作流程 Antd的使用 安装npm install antd --save import 'antd/dist/antd.css'import { Input, Butto......

星闪海洋
今天
4
0
OSChina 周一乱弹 —— 你们谁看见了我的诺贝尔奖

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @脚板薯 :这么晚不睡只为找到一首歌,晚安。 ♫Say You Want Me♪ ♫Say You Want Me♪ - Augustana 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
今天
368
17
我为什么要写微信公众号

埋一颗种子,细心呵护,静待她枝繁叶茂,葱郁参天 V2论坛上有个帖子【做程序员最重要的还是一定要有自己的作品】,作者写道: 能有一个作品和你的名字联系在一起,应当成为在职业生涯前期着意...

运维咖啡吧
今天
3
0
数据库

数据库架构 数据库架构可以分为存储文件系统和程序实例两大块,而程序实例根据不同的功能又可以分为如下小模块。 1550644570798 索引模块 常见的问题有: 为什么要使用索引 什么样的信息能成...

一只小青蛙
今天
5
0
PHP常用经典算法实现

<? //-------------------- // 基本数据结构算法 //-------------------- //二分查找(数组里查找某个元素) function bin_sch($array, $low, $high, $k){ if ( $low <= $high){ $mid = int......

半缘修道半缘君丶
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部