因为排查一个问题,顺带着熟悉了一下Discuz!与Ucenter注册和登录的机制,特整理分析。
下面以Discuz! X2.5为例分析代码实现。
1.注册
找到source\class\class_member.php文件,有如下代码:
$uid = uc_user_register(addslashes($username), $password, $email, $questionid, $answer, $_G['clientip']);
uc_user_register定义在uc_client\client.php文件,代码如下:
function uc_user_register($username, $password, $email, $questionid = '', $answer = '', $regip = '') {
return call_user_func(UC_API_FUNC, 'user', 'register', array('username'=>$username, 'password'=>$password, 'email'=>$email, 'questionid'=>$questionid, 'answer'=>$answer, 'regip' => $regip));
}
此函数会回调uc_server下的方法,执行文件为uc_server\control\user.php,执行代码如下: