123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444 |
- <?php
- /*
- [UCenter] (C)2001-2099 Comsenz Inc.
- This is NOT a freeware, use is subject to license terms
- $Id: user.php 1174 2014-11-03 04:38:12Z hypowang $
- */
- !defined('IN_UC') && exit('Access Denied');
- define('UC_USER_CHECK_USERNAME_FAILED', -1);
- define('UC_USER_USERNAME_BADWORD', -2);
- define('UC_USER_USERNAME_EXISTS', -3);
- define('UC_USER_EMAIL_FORMAT_ILLEGAL', -4);
- define('UC_USER_EMAIL_ACCESS_ILLEGAL', -5);
- define('UC_USER_EMAIL_EXISTS', -6);
- define('UC_USER_MOBILE_FORMAT_ILLEGAL', -7);
- define('UC_USER_MOBILE_ACCESS_ILLEGAL', -8);
- define('UC_USER_MOBILE_EXISTS', -9);
- class usercontrol extends base
- {
- function __construct()
- {
- $this->usercontrol();
- }
- function usercontrol()
- {
- parent::__construct();
- $this->load('user');
- $this->app = $this->cache['apps'][UC_APPID];
- }
- // 同步注册
- function onsynregister()
- {
- $this->init_input();
- $uid = $this->input('uid');
- $password = $this->input('password');
- if ($this->app['synlogin'])
- {
- if ($this->user = $_ENV['user']->get_user_by_uid($uid))
- {
- $params = 'action=synregister' .
- '&username=' . $this->user['username'] .
- '&uid=' . $this->user['uid'] .
- '&password=' . $password .
- '&email=' . $this->user['email'] .
- '&mobile=' . $this->user['mobile'] .
- '&time=' . $this->time;
- $synstr = '';
- foreach ($this->cache['apps'] as $appid => $app)
- {
- if ($app['synlogin'] && $app['appid'] != $this->app['appid'])
- {
- $synstr .= '<script type="text/javascript" src="' . $app['url'] . '/api/uc.php?time=' . $this->time . '&code=' . urlencode($this->authcode($params, 'ENCODE', $app['authkey'])) . '"></script>';
- }
- }
- return $synstr;
- }
- }
- return '';
- }
- // 同步登录
- function onsynlogin()
- {
- $this->init_input();
- $uid = $this->input('uid');
- if ($this->app['synlogin'])
- {
- if ($this->user = $_ENV['user']->get_user_by_uid($uid))
- {
- $params = 'action=synlogin' .
- '&username=' . $this->user['username'] .
- '&uid=' . $this->user['uid'] .
- '&password=' . $this->user['password'] .
- '&time=' . $this->time;
- $synstr = '';
- foreach ($this->cache['apps'] as $appid => $app)
- {
- if ($app['synlogin'] && $app['appid'] != $this->app['appid'])
- {
- $synstr .= '<script type="text/javascript" src="' . $app['url'] . '/api/uc.php?time=' . $this->time . '&code=' . urlencode($this->authcode($params, 'ENCODE', $app['authkey'])) . '"></script>';
- }
- }
- return $synstr;
- }
- }
- return '';
- }
- // 同步退出
- function onsynlogout()
- {
- $this->init_input();
- if ($this->app['synlogin'])
- {
- $synstr = '';
- foreach ($this->cache['apps'] as $appid => $app)
- {
- if ($app['synlogin'] && $app['appid'] != $this->app['appid'])
- {
- $synstr .= '<script type="text/javascript" src="' . $app['url'] . '/api/uc.php?time=' . $this->time . '&code=' . urlencode($this->authcode('action=synlogout&time=' . $this->time, 'ENCODE', $app['authkey'])) . '"></script>';
- }
- }
- return $synstr;
- }
- return '';
- }
- // 同步注册
- function onregister()
- {
- $this->init_input();
- $username = $this->input('username');
- $password = $this->input('password');
- $email = $this->input('email');
- $mobile = $this->input('mobile');
- $extend = $this->input('extend');
- $extend = $extend ? $extend : [];
- if (($status = $this->_check_username($username)) < 0)
- {
- return $status;
- }
- if ($email && ($status = $this->_check_email($email)) < 0)
- {
- return $status;
- }
- if ($mobile && ($status = $this->_check_mobile($mobile)) < 0)
- {
- return $status;
- }
- $uid = $_ENV['user']->add_user($username, $password, $email, $mobile, 0, $extend);
- return $uid;
- }
- // 编辑ucenter中信息
- function onedit()
- {
- $this->init_input();
- $uid = intval($this->input('uid'));
- $username = $this->input('username');
- $password = $this->input('password');
- $email = $this->input('email');
- $mobile = $this->input('mobile');
- $extend = $this->input('extend');
- $extend = $extend ? $extend : [];
- $status = $_ENV['user']->edit_user($username, $password, $email, $mobile, $uid, $extend);
- if ($status > 0)
- {
- if (@include UC_ROOT . './data/cache/apps.php')
- {
- if (count($_CACHE['apps']) > 1)
- {
- //手动调用一次同步到所有应用
- uc_api_post('user', 'edit', $this->input);
- }
- }
- return $status;
- $this->load('note');
- $_ENV['note']->add('updateinfo', http_build_query($this->input));
- }
- return $status;
- }
- // 登录ucenter账号
- function onlogin()
- {
- $this->init_input();
- $username = $this->input('username');
- $password = $this->input('password');
- $isuid = $this->input('isuid'); //0用户名 1UID 2邮箱 3手机
- if ($isuid == 1)
- {
- $user = $_ENV['user']->get_user_by_uid($username);
- }
- elseif ($isuid == 2)
- {
- $user = $_ENV['user']->get_user_by_email($username);
- }
- elseif ($isuid == 3)
- {
- $user = $_ENV['user']->get_user_by_mobile($username);
- }
- else
- {
- $user = $_ENV['user']->get_user_by_username($username);
- }
- $passwordmd5 = preg_match('/^\w{32}$/', $password) ? $password : md5($password);
- if (empty($user))
- {
- $status = -1;
- }
- elseif ($user['password'] != md5($passwordmd5 . $user['salt']))
- {
- $status = -2;
- }
- else
- {
- $status = $user['uid'];
- }
- $merge = $status != -1 && !$isuid && $_ENV['user']->check_mergeuser($username) ? 1 : 0;
- return [
- 'status' => $status,
- 'uid' => isset($user['uid']) ? $user['uid'] : 0,
- 'username' => isset($user['username']) ? $user['username'] : '',
- 'password' => $password,
- 'email' => isset($user['email']) ? $user['email'] : '',
- 'mobile' => isset($user['mobile']) ? $user['mobile'] : '',
- 'merge' => $merge
- ];
- }
- function onlogincheck()
- {
- $this->init_input();
- $username = $this->input('username');
- $ip = $this->input('ip');
- return $_ENV['user']->can_do_login($username, $ip);
- }
- function oncheck_email()
- {
- $this->init_input();
- $email = $this->input('email');
- return $this->_check_email($email);
- }
- function oncheck_username()
- {
- $this->init_input();
- $username = $this->input('username');
- if (($status = $this->_check_username($username)) < 0)
- {
- return $status;
- }
- else
- {
- return 1;
- }
- }
- function onget_user()
- {
- $this->init_input();
- $username = $this->input('username');
- $isuid = $this->input('isuid'); //0用户名 1UID 2邮箱 3手机
- if ($isuid == 1)
- {
- $member = $_ENV['user']->get_user_by_uid($username);
- }
- else if ($isuid == 2)
- {
- $member = $_ENV['user']->get_user_by_email($username);
- }
- else if ($isuid == 3)
- {
- $member = $_ENV['user']->get_user_by_mobile($username);
- }
- else
- {
- $member = $_ENV['user']->get_user_by_username($username);
- }
- if ($member)
- {
- // 加载扩展表
- $memberfields = $this->db->fetch_first("SELECT * FROM " . UC_DBTABLEPRE . "memberfields WHERE uid='{$member['uid']}'");
- $memberfields = $memberfields ? $memberfields : [];
- $member = [
- 'uid' => $member['uid'],
- 'username' => $member['username'],
- 'email' => $member['email'],
- 'mobile' => $member['mobile']
- ];
- return array_merge($member, $memberfields);
- }
- else
- {
- return 0;
- }
- }
- function ongetprotected()
- {
- $this->init_input();
- $protectedmembers = $this->db->fetch_all("SELECT uid,username FROM " . UC_DBTABLEPRE . "protectedmembers GROUP BY username");
- return $protectedmembers;
- }
- function ondelete()
- {
- $this->init_input();
- $uid = $this->input('uid');
- return $_ENV['user']->delete_user($uid);
- }
- function onaddprotected()
- {
- $this->init_input();
- $username = $this->input('username');
- $admin = $this->input('admin');
- $appid = $this->app['appid'];
- $usernames = (array) $username;
- foreach ($usernames as $username)
- {
- $user = $_ENV['user']->get_user_by_username($username);
- $uid = $user['uid'];
- $this->db->query("REPLACE INTO " . UC_DBTABLEPRE . "protectedmembers SET uid='$uid', username='$username', appid='$appid', dateline='{$this->time}', admin='$admin'", 'SILENT');
- }
- return $this->db->errno() ? -1 : 1;
- }
- function ondeleteprotected()
- {
- $this->init_input();
- $username = $this->input('username');
- $appid = $this->app['appid'];
- $usernames = (array) $username;
- foreach ($usernames as $username)
- {
- $this->db->query("DELETE FROM " . UC_DBTABLEPRE . "protectedmembers WHERE username='$username' AND appid='$appid'");
- }
- return $this->db->errno() ? -1 : 1;
- }
- function onmerge()
- {
- $this->init_input();
- $uid = $this->input('uid');
- $oldusername = $this->input('oldusername');
- $newusername = $this->input('newusername');
- $password = $this->input('password');
- $email = $this->input('email');
- $mobile = $this->input('mobile');
- $extend = $this->input('extend');
- $extend = $extend ? $extend : [];
- if (($status = $this->_check_username($newusername)) < 0)
- {
- return $status;
- }
- $uid = $_ENV['user']->add_user($newusername, $password, $email, $mobile, $uid, $extend);
- $this->db->query("DELETE FROM " . UC_DBTABLEPRE . "mergemembers WHERE appid='" . $this->app['appid'] . "' AND username='$oldusername'");
- return $uid;
- }
- function onmerge_remove()
- {
- $this->init_input();
- $username = $this->input('username');
- $this->db->query("DELETE FROM " . UC_DBTABLEPRE . "mergemembers WHERE appid='" . $this->app['appid'] . "' AND username='$username'");
- return NULL;
- }
- function _check_username($username)
- {
- $username = addslashes(trim(stripslashes($username)));
- if (!$_ENV['user']->check_username($username))
- {
- return UC_USER_CHECK_USERNAME_FAILED;
- }
- elseif (!$_ENV['user']->check_usernamecensor($username))
- {
- return UC_USER_USERNAME_BADWORD;
- }
- elseif ($_ENV['user']->check_usernameexists($username))
- {
- return UC_USER_USERNAME_EXISTS;
- }
- return 1;
- }
- function _check_email($email, $username = '')
- {
- if (empty($this->settings))
- {
- $this->settings = $this->cache('settings');
- }
- if (!$_ENV['user']->check_emailformat($email))
- {
- return UC_USER_EMAIL_FORMAT_ILLEGAL;
- }
- elseif (!$_ENV['user']->check_emailaccess($email))
- {
- return UC_USER_EMAIL_ACCESS_ILLEGAL;
- }
- elseif (!$this->settings['doublee'] && $_ENV['user']->check_emailexists($email, $username))
- {
- return UC_USER_EMAIL_EXISTS;
- }
- else
- {
- return 1;
- }
- }
- function _check_mobile($mobile, $username = '')
- {
- if (empty($this->settings))
- {
- $this->settings = $this->cache('settings');
- }
- if (!$_ENV['user']->check_mobileformat($mobile))
- {
- return UC_USER_EMAIL_FORMAT_ILLEGAL;
- }
- elseif (!$_ENV['user']->check_mobileaccess($mobile))
- {
- return UC_USER_EMAIL_ACCESS_ILLEGAL;
- }
- elseif (!$this->settings['doublee'] && $_ENV['user']->check_mobileexists($mobile, $username))
- {
- return UC_USER_EMAIL_EXISTS;
- }
- else
- {
- return 1;
- }
- }
- function onuploadavatar()
- {
- }
- function onrectavatar()
- {
- }
- function flashdata_decode($s)
- {
- }
- }
|