本篇使用tp自带的index模块的index控制器来操作ucenter。
注意!本篇所有的修改文件或代码都均在tp项目下操作的,和dz已经无关了。
编辑控制器
<?php
namespace app\index\controller;
include_once ROOT_PATH.'config/config_ucenter.php';
include_once ROOT_PATH.'uc_client/client.php';
class Index
{
public function register()
{
$result = 'tp的站点注册成功'; // 你本站点注册成功后再注册dz
if ($result == 'tp的站点注册成功') {
$uid = uc_user_register('username', '1', '[email protected]');
var_dump($uid);
// 大于 0:返回用户id,表示用户注册成功
// -1:用户名不合法
// -2:包含不允许注册的词语
// -3:用户名已经存在
// -4:Email 格式有误
// -5:Email 不允许注册
// -6:该 Email 已经被注册
}
}
}
访问http://localhost/tp/public/index.php/index/index/register
表示我注册的这个会员,表id是2
打开pre_ucenter_members
表
现在,你可以去登录了。登录完让你激活,激活了就登录成功了。
这个激活是写入了另外一个真正的会员表pre_common_member
,你不激活就只是ucenter注册的。
跳过登录激活,tp
根目录下修改配置文件
define('DISCUZ_DANAME', 'ultrax'); // dz数据库名
define('DISCUZ_DBRRE', 'pre_'); // dz数据包前缀
tp
根目录下修改代码
找到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'");
$discuz_dbname = DISCUZ_DANAME;
$discuz_table_pre = DISCUZ_DBRRE;
$table_info = $discuz_dbname.'.'.$discuz_table_pre;
$this->db->query("INSERT INTO ".$table_info."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 ".$table_info."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 ".$table_info."common_member_profile SET uid='$uid'");
$this->db->query("INSERT INTO ".$table_info."common_member_field_forum SET uid='$uid'");
$this->db->query("INSERT INTO ".$table_info."common_member_field_home SET uid='$uid'");
$this->db->query("INSERT INTO ".$table_info."common_member_count SET uid='$uid', extcredits1='0', extcredits2='0', extcredits3='0', extcredits4='0', extcredits5='0', extcredits6='0', extcredits7='0', extcredits8='0'");
return $uid;
}
修改注册方法,把用户名改成username2,邮箱改成[email protected],再次运行。如果返回的不大于0,就看注释,是什么原因。
此时,你再去看那俩个会员表,都有username2了,再去登录username2,就直接登录了。
如果你想注册的时候不带邮箱,就去注释这几行代码
删除用户
新增方法
public function delUser()
{
$uid = uc_get_user('username');
var_dump($uid);
}
访问http://localhost/tp/public/index.php/index/index/delUser
该方法是通过用户名查询用户信息,我们需要先获取到用户的id,才能调用下一个方法删除。下标0就是id。
public function delUser()
{
$uid = uc_get_user('username4');
var_dump($uid);
$result = uc_user_delete($uid[0]);
var_dump($result);
}
返回值说明说返回1是成功,0是失败。但我返回的都是4,但确实删掉了,也登录不了了。
pre_ucenter_members
会在执行后删除,但是pre_common_member
会在你去登录的时候删除。
ucenter的官网挂了,也没找着手册,幸好有这位老哥的资料,不然鬼知道到底发生了什么!