Uc user merge
出自Discuz! 技术文库
对
Uc user merge
的源代码
跳转到:
导航
,
搜索
根据以下的原因,您无权限进行编辑这个页面操作:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
'''uc_user_merge''' ::integer uc_user_merge(string/ oldusername , string newusername, integer uid, string password, string email) ==描述== 本接口函数用于把重名的用户合并到 UCenter。 ==参数== {| style="background-color:#dfb; border-collapse: collapse; border-spacing: 3px; border:1px solid #8d0; margin: 0px; width: 100%" cellpadding="5" |- | '''参数名''' | '''类型''' | '''是否必需''' | '''说明''' | '''备注''' |- | oldusername | string | 是 | 老用户名 | |- | newusername | string | 是 | 新用户名 | |- | uid | integer | 是 | 用户 ID | |- | password | string | 是 | 密码 | |- | email | string | 是 | 电子邮件 | |} ==范例== <pre> $uid = uc_user_merge($_GET['username'], $_GET['usernamenew'], $user['uid'], $_GET['password'], $user['email']); if($uid > 0) { echo '用户名可用'; } elseif($uid == -1) { echo '用户名不合法'; } elseif($uid == -2) { echo '包含要允许注册的词语'; } elseif($uid == -3) { echo '用户名已经存在'; } $db->query("UPDATE {$tablepre}members SET username='$_GET[usernamenew]' WHERE uid='$uid'"); </pre> ==返回值== {|style="background-color:#feb; border-collapse: collapse; border-spacing: 3px; border:1px solid #fd8; margin: 0px; width: 100%" cellpadding="3" |- | '''返回值类型''' | '''说明''' | '''备注''' |- | integer | 大于 0:返回用户 ID,表示用户注册成功<br>-1:用户名不合法<br>-2:包含不允许注册的词语<br>-3:用户名已经存在 | |} ==用户的合并和用户重名的处理== 如果您的应用程序集成到 UCenter 时包含旧的用户数据,我们建议您可以采取以下范例的方式把您的用户导入到 UCenter。 <pre> function getmaxuid() { global $ucdb; $query = $ucdb->query("SHOW CREATE TABLE ".UC_DBTABLEPRE."members"); $data = $ucdb->fetch_array($query); $data = $data['Create Table']; if(preg_match('/AUTO_INCREMENT=(\d+?)[\s|$]/i', $data, $a)) { return $a[1] - 1; } else { return 0; } } $maxuid = getmaxuid(); $query = $db->query("SELECT * FROM {$tablepre}members"); while($data = $db->fetch_array($query)) { $salt = rand(100000, 999999); $password = md5($data['password'].$salt); $data['username'] = addslashes($data['username']); $lastuid = $data['uid'] += $maxuid; $queryuc = $ucdb->query("SELECT count(*) FROM ".UC_DBTABLEPRE."members WHERE username='$data[username]'"); $userexist = $ucdb->result($queryuc, 0); if(!$userexist) { $ucdb->query("INSERT LOW_PRIORITY INTO ".UC_DBTABLEPRE."members SET uid='$data[uid]', username='$data[username]', password='$password', email='$data[email]', regip='$data[regip]', regdate='$data[regdate]', salt='$salt'", 'SILENT'); $ucdb->query("INSERT LOW_PRIORITY INTO ".UC_DBTABLEPRE."memberfields SET uid='$data[uid]'",'SILENT'); } else { $ucdb->query("REPLACE INTO ".UC_DBTABLEPRE."mergemembers SET appid='".UC_APPID."', username='$data[username]'", 'SILENT'); } } $ucdb->query("ALTER TABLE ".UC_DBTABLEPRE."members AUTO_INCREMENT=".($lastuid + 1)); </pre> 本方式的基本流程是:首先,获取当前 UCenter 中的最大用户 ID 的值。然后,读取应用程序自己的用户表,判读用户名是否在 UCenter 重复。如果重复,把重名的用户名保存到 UCenter 的 mergemembers 表中,不合并这个用户。如果不重名,则按正常方式导入用户进行合并。当用户插入到 mergemembers 表后,用户在这个应用程序登录的时候,登录状态的返回数组中 [4] 的值将返回 1(请参考关于 [[uc_user_login]] 函数的说明)。当登录状态返回重名状态后建议您在应用程序中判读用户合法性后进行更名的处理,调用本接口函数。
返回到
Uc user merge
。
查看
页面
讨论
查看源代码
历史
个人工具
登录
导航
首页
社区入口
当前事件
最近更改
随机页面
帮助
搜索
工具箱
链入页面
链出更改
特殊页面