1、当你在你站点下的【某一个应用】下注册的时候,第一步首先是去ucenter下注册的
PHP代码
$uid = uc_user_register($_POST['username'], $_POST['password'], $_POST['email']);
if($uid <= 0) {
if($uid == -1) {
echo ‘用户名不合法’;
} elseif($uid == -2) {
echo ‘包含要允许注册的词语’;
} elseif($uid == -3) {
echo ‘用户名已经存在’;
} elseif($uid == -4) {
echo ‘Email 格式有误’;
} elseif($uid == -5) {
echo ‘Email 不允许注册’;
} elseif($uid == -6) {
echo ‘该 Email 已经被注册’;
} else {
echo ‘未定义’;
}
} else {
$username = $_POST['username'];
}
其中的这个uc_user_register又调用usercontrol类的onregister方法,如下
PHP代码
function onregister() {
$this->init_input();
$username = $this->input(‘username’);
$password = $this->input(‘password’);
$email = $this->input(‘email’);
$questionid = $this->input(‘questionid’);
$answer = $this->input(‘answer’);
if(($status = $this->_check_username($username)) < 0) {
return $status;
}
if(($status = $this->_check_email($email)) < 0) {
return $status;
}
$uid = $_ENV['user']->add_user($username, $password, $email, 0, $questionid, $answer);
return $uid;
}
其中又调用usermodel的add_user方法
PHP代码
function add_user($username, $password, $email, $uid = 0, $questionid = ”, $answer = ”) {
$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=’”.$this->base->onlineip.”‘, regdate=’”.$this->base->time.”‘, salt=’$salt’”);
$uid = $this->db->insert_id();
$this->db->query(“INSERT INTO “.UC_DBTABLEPRE.”memberfields SET uid=’$uid’”);
return $uid;
}
可见,执行这个操作后,UC_DBTABLEPRE.”members 表中就会多条用户记录了
2、在自己的应用中注册
PHP代码
if($username) {
$db->query(“INSERT INTO {$tablepre}members (uid,username,admin) VALUES (‘$uid’,'$username’,'0′)”);
//注册成功,设置 Cookie,加密直接用 uc_authcode 函数,用户使用自己的函数
setcookie(‘Example_auth’, uc_authcode($uid.”\t”.$username, ‘ENCODE’));
echo ‘注册成功<br><a href=”‘.$_SERVER['PHP_SELF'].’”>继续</a>’;
exit;
}
这样之后,example_members表中也就有条用户记录了。。
至此实现了,【同步注册】了。。。
3、不过还没完。。。虽然我们在ucenter和当前应用中都注册了用户了。。。那么【其它应用】咋办呢??
呵呵,别急,还有【激活】没讲呢。。
当你在别的网站,用这个账号第一次登陆的时候,会请求
PHP代码
list($uid, $username, $password, $email) = uc_user_login($_POST['username'], $_POST['password']);
如果$uid > 0的话,会显示让你激活的链接,而通过这个激活链接点过去之后,就会绕过uc_user_register,而只在本应用的数据库插入一条用户记录。。。