亚洲乱码卡一卡二卡三永久-亚洲乱码一二三四区-亚洲乱码一区二区三区在线观看-亚洲伦理一区-成人在色线视频在线观看免费大全-成人在线91

多程序整合 UCenter,在新用戶首次注冊后是沒有同步登錄到其它程序的,也就是說用戶得在其它程序用密碼再登錄一次,以后才能同步登錄,還有就是用戶不是在 Discuz 程序注冊的話,在 Discuz 登錄時得手動激活,這些都導(dǎo)致用戶體驗很不好,不過解決方法很簡單~
修改各個程序目錄下的 ./uc_client/model/user.php 文件,大概在 129 行處的 function add_user 函數(shù)里添加代碼
如 Discuz X 的:
$this->db->query("INSERT INTO `dbname`.pre_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 `dbname`.pre_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 `dbname`.pre_common_member_profile SET uid='$uid'");
$this->db->query("INSERT INTO `dbname`.pre_common_member_field_forum SET uid='$uid'");
$this->db->query("INSERT INTO `dbname`.pre_common_member_field_home SET uid='$uid'");
$this->db->query("INSERT INTO `dbname`.pre_common_member_count SET uid='$uid', extcredits1='0', extcredits2='0', extcredits3='0', extcredits4='0', extcredits5='0', extcredits6='0', extcredits7='0', extcredits8='0'");
Discuz 的參數(shù)比較多,`dbname` 是數(shù)據(jù)庫名,.pre_ 是表前綴,按自己的情況修改,注意需要在 MySQL 設(shè)置相應(yīng)的權(quán)限,假設(shè) Discuz X 和 UCenter 是在不同的數(shù)據(jù)庫且不同數(shù)據(jù)庫用戶,Discuz X 數(shù)據(jù)庫和用戶是 discuz,UCenter 的數(shù)據(jù)庫和用戶是 ucenter,那么需要設(shè)置 ucenter 擁有數(shù)據(jù)庫 discuz 的 insert 權(quán)限。(如果是同一數(shù)據(jù)庫、同一用戶則忽略這些步驟)
phpMyAdmin 的操作步驟大概為:權(quán)限 -> 編輯權(quán)限 -> 按數(shù)據(jù)庫指定權(quán)限 -> 選擇數(shù)據(jù)庫 -> 勾選 INSERT -> 執(zhí)行。

這些代碼的原理就是,在某應(yīng)用注冊用戶時,同時添加其它應(yīng)用的數(shù)據(jù)庫字段,因為 UCenter 在首次注冊時并沒有這一步驟所以才沒能同步登錄與激活。

修改后完整的 function add_user 函數(shù)是這樣的:
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 `dbname`.pre_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 `dbname`.pre_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 `dbname`.pre_common_member_profile SET uid='$uid'");
	$this->db->query("INSERT INTO `dbname`.pre_common_member_field_forum SET uid='$uid'");
	$this->db->query("INSERT INTO `dbname`.pre_common_member_field_home SET uid='$uid'");
	$this->db->query("INSERT INTO `dbname`.pre_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;
}
其它的程序就比較簡單了,打開程序的數(shù)據(jù)庫的用戶表,對比一下就知道了,下面提供幾個參考:
// ecmall
$this->db->query("INSERT INTO `ecmall`.ecm_member SET user_id='$uid', user_name='$username', email='$email', password='$password', gender='0', reg_time='".$this->base->time."', last_login='".$this->base->time."', last_ip='$regip', logins='1', ugrade='0', outer_id='0'");

// ecshop
$this->db->query("INSERT INTO `ecshop`.ecs_users SET user_id='$uid', email='$email', user_name='$username', password='$password', reg_time='".$this->base->time."', last_login='".$this->base->time."', last_ip='$regip'");

// thinksns
$this->db->query("INSERT INTO ts_user SET  email='$email', password='$password', uname='$username', is_active='1', is_init='1'");
$tsuid = $this->db->insert_id();//獲取最新插入的thinksns的ID號
$this->db->query("INSERT INTO ts_ucenter_user_link SET uid='$tsuid', uc_uid='$uid', uc_username='$username',uc_email='$email'");
$this->db->query("INSERT INTO ts_user_online SET uid='$tsuid', ctime='".$this->base->time."'");

thinksns的index.php最開頭要加上session_start(); 不然用戶是不能同步登錄的,因為session是在thinksns里面uc通過api/uc_client/common.php文件下面的如下代碼同步的

//同步登錄ThinkSNS
function ts_synclogin($user){
    session_start();
    $uid = $user['uid'];
    // 注冊session
    $_SESSION['mid'] = intval($uid);    
    $_SESSION['SITE_KEY'] = ts_get_site_key();

(需要說明的是部分程序的登錄機(jī)制不同使得此方法的首次注冊同步登錄無法實現(xiàn))

 

穩(wěn)定

產(chǎn)品高可用性高并發(fā)

貼心

項目群及時溝通

專業(yè)

產(chǎn)品經(jīng)理1v1支持

快速

MVP模式小步快跑

承諾

我們選擇聲譽(yù)

堅持

10年專注高端品質(zhì)開發(fā)
  • 返回頂部
主站蜘蛛池模板: 国产一国产一级新婚之夜 | 人人澡人人澡 | 成片免费观看视频在线网 | 日本一区欧美 | 看中国国产一级毛片真人视频 | 最近2019年中文字幕大全视频 | 玖玖香蕉视频 | 激情五月情| 在线观看国产一区二三区 | 中国女人一级毛片 | a级毛片黄色 | 特级全黄一级毛片视频 | 成人免费视频国产 | 久久亚洲国产精品一区二区 | 亚洲女人国产香蕉久久精品 | 夜夜骑天天操 | 激情 黄 +色+成+人 | 美国一区二区三区 | 伦理影院在线观看 | 国产 日韩 欧美在线 | 久久天天 | 一级做a爰全过程免费视频毛片 | 欧美一级成人 | 亚洲已满18点击进入在线观看 | 欧美日韩大片在线观看 | 色xx综合| 五月激情六月丁香 | 久久国产精品广西柳州门 | 日韩永久免费进入2015 | 久爱www成人网免费视频 | 色噜噜狠狠色综合中国 | 国产福利毛片 | 冈本视频污 | 深夜影院一级毛片 | www.av一区 | 亚洲成网站www久久九 | 亚洲综合久久久久久888 | 精品国偷自产在线不卡短视频 | 外国三级黄色片 | 欧美成人午夜剧场 | 日韩www视频 |