/** * QQ微博登录 */ public function public_qq_login() { define('QQ_AKEY', pc_base::load_config('system', 'qq_akey')); define('QQ_SKEY', pc_base::load_config('system', 'qq_skey')); pc_base::load_app_class('qqoauth', '', 0); $this->_session_start(); if (isset($_GET['callback']) && trim($_GET['callback'])) { $o = new WeiboOAuth(QQ_AKEY, QQ_SKEY, $_SESSION['keys']['oauth_token'], $_SESSION['keys']['oauth_token_secret']); $_SESSION['last_key'] = $o->getAccessToken($_REQUEST['oauth_verifier']); if (!empty($_SESSION['last_key']['name'])) { //检查connect会员是否绑定,已绑定直接登录,未绑定提示注册/绑定页面 $where = array('connectid' => $_REQUEST['openid'], 'from' => 'qq'); $r = $this->db->get_one($where); //connect用户已经绑定本站用户 if (!empty($r)) { //读取本站用户信息,执行登录操作 $password = $r['password']; $this->_init_phpsso(); $synloginstr = $this->client->ps_member_synlogin($r['phpssouid']); $userid = $r['userid']; $groupid = $r['groupid']; $username = $r['username']; $nickname = empty($r['nickname']) ? $username : $r['nickname']; $this->db->update(array('lastip' => ip(), 'lastdate' => SYS_TIME, 'nickname' => $me['name']), array('userid' => $userid)); if (!$cookietime) { $get_cookietime = param::get_cookie('cookietime'); } $_cookietime = $cookietime ? intval($cookietime) : ($get_cookietime ? $get_cookietime : 0); $cookietime = $_cookietime ? TIME + $_cookietime : 0; $phpcms_auth = sys_auth($userid . "\t" . $password, 'ENCODE', get_auth_key('login')); param::set_cookie('auth', $phpcms_auth, $cookietime); param::set_cookie('_userid', $userid, $cookietime); param::set_cookie('_username', $username, $cookietime); param::set_cookie('_groupid', $groupid, $cookietime); param::set_cookie('cookietime', $_cookietime, $cookietime); param::set_cookie('_nickname', $nickname, $cookietime); param::set_cookie('_from', 'snda'); $forward = isset($_GET['forward']) && !empty($_GET['forward']) ? $_GET['forward'] : 'index.php?m=member&c=index'; showmessage(L('login_success') . $synloginstr, $forward); } else { //弹出绑定注册页面 $_SESSION = array(); $_SESSION['connectid'] = $_REQUEST['openid']; $_SESSION['from'] = 'qq'; $connect_username = $_SESSION['last_key']['name']; //加载用户模块配置 $member_setting = getcache('member_setting'); if (!$member_setting['allowregister']) { showmessage(L('deny_register'), 'index.php?m=member&c=index&a=login'); } //获取用户siteid $siteid = isset($_REQUEST['siteid']) && trim($_REQUEST['siteid']) ? intval($_REQUEST['siteid']) : 1; //过滤非当前站点会员模型 $modellist = getcache('member_model', 'commons'); foreach ($modellist as $k => $v) { if ($v['siteid'] != $siteid || $v['disabled']) { unset($modellist[$k]); } } if (empty($modellist)) { showmessage(L('site_have_no_model') . L('deny_register'), HTTP_REFERER); } $modelid = 10; //设定默认值 if (array_key_exists($modelid, $modellist)) { //获取会员模型表单 require CACHE_MODEL_PATH . 'member_form.class.php'; $member_form = new member_form($modelid); $this->db->set_model($modelid); $forminfos = $forminfos_arr = $member_form->get(); //万能字段过滤 foreach ($forminfos as $field => $info) { if ($info['isomnipotent']) { unset($forminfos[$field]); } else { if ($info['formtype'] == 'omnipotent') { foreach ($forminfos_arr as $_fm => $_fm_value) { if ($_fm_value['isomnipotent']) { $info['form'] = str_replace('{' . $_fm . '}', $_fm_value['form'], $info['form']); } } $forminfos[$field]['form'] = $info['form']; } } } $formValidator = $member_form->formValidator; } include template('member', 'connect'); } } else { showmessage(L('login_failure'), 'index.php?m=member&c=index&a=login'); } } else { $oauth_callback = APP_PATH . 'index.php?m=member&c=index&a=public_qq_login&callback=1'; $oauth_nonce = md5(SYS_TIME); $oauth_signature_method = 'HMAC-SHA1'; $oauth_timestamp = SYS_TIME; $oauth_version = '1.0'; $url = "https://open.t.qq.com/cgi-bin/request_token?oauth_callback={$oauth_callback}&oauth_consumer_key=" . QQ_AKEY . "&oauth_nonce={$oauth_nonce}&oauth_signature=" . QQ_SKEY . "&oauth_signature_method=HMAC-SHA1&oauth_timestamp={$oauth_timestamp}&oauth_version={$oauth_version}"; $o = new WeiboOAuth(QQ_AKEY, QQ_SKEY); $keys = $o->getRequestToken(array('callback' => $oauth_callback)); $_SESSION['keys'] = $keys; $aurl = $o->getAuthorizeURL($keys['oauth_token'], false, $oauth_callback); include template('member', 'connect_qq'); } }
/** * edit member */ function edit() { if (isset($_POST['dosubmit'])) { $memberinfo = $info = array(); $basicinfo['userid'] = $_POST['info']['userid']; $basicinfo['username'] = $_POST['info']['username']; $basicinfo['nickname'] = $_POST['info']['nickname']; $basicinfo['email'] = $_POST['info']['email']; $basicinfo['point'] = $_POST['info']['point']; $basicinfo['password'] = $_POST['info']['password']; $basicinfo['groupid'] = $_POST['info']['groupid']; $basicinfo['modelid'] = $_POST['info']['modelid']; $basicinfo['vip'] = $_POST['info']['vip']; $basicinfo['overduedate'] = strtotime($_POST['info']['overduedate']); //会员基本信息 $info = $this->_checkuserinfo($basicinfo, 1); //会员模型信息 $modelinfo = array_diff($_POST['info'], $info); //过滤vip过期时间 unset($modelinfo['overduedate']); unset($modelinfo['pwdconfirm']); $userid = $info['userid']; //如果是超级管理员角色,显示所有用户,否则显示当前站点用户 if ($_SESSION['roleid'] == 1) { $where = array('userid' => $userid); } else { $siteid = get_siteid(); $where = array('userid' => $userid, 'siteid' => $siteid); } $userinfo = $this->db->get_one($where); if (empty($userinfo)) { showmessage(L('user_not_exist') . L('or') . L('no_permission'), HTTP_REFERER); } //删除用户头像 if (!empty($_POST['delavatar'])) { $this->client->ps_deleteavatar($userinfo['phpssouid']); } $status = $this->client->ps_member_edit($info['username'], $info['email'], '', $info['password'], $userinfo['phpssouid'], $userinfo['encrypt']); if ($status >= 0) { unset($info['userid']); unset($info['username']); //如果密码不为空,修改用户密码。 if (isset($info['password']) && !empty($info['password'])) { $info['password'] = password($info['password'], $userinfo['encrypt']); } else { unset($info['password']); } $this->db->update($info, array('userid' => $userid)); require_once CACHE_MODEL_PATH . 'member_input.class.php'; require_once CACHE_MODEL_PATH . 'member_update.class.php'; $member_input = new member_input($basicinfo['modelid']); $modelinfo = $member_input->get($modelinfo); //更新模型表,方法更新了$this->table $this->db->set_model($info['modelid']); $userinfo = $this->db->get_one(array('userid' => $userid)); if ($userinfo) { $this->db->update($modelinfo, array('userid' => $userid)); } else { $modelinfo['userid'] = $userid; $this->db->insert($modelinfo); } showmessage(L('operation_success'), '?m=member&c=member&a=manage', '', 'edit'); } else { showmessage(L('operation_failure'), HTTP_REFERER); } } else { $show_header = $show_scroll = true; $siteid = get_siteid(); $userid = isset($_GET['userid']) ? $_GET['userid'] : showmessage(L('illegal_parameters'), HTTP_REFERER); //会员组缓存 $group_cache = getcache('grouplist', 'member'); foreach ($group_cache as $_key => $_value) { $grouplist[$_key] = $_value['name']; } //会员模型缓存 $member_model_cache = getcache('member_model', 'commons'); foreach ($member_model_cache as $_key => $_value) { if ($siteid == $_value['siteid']) { $modellist[$_key] = $_value['name']; } } //如果是超级管理员角色,显示所有用户,否则显示当前站点用户 if ($_SESSION['roleid'] == 1) { $where = array('userid' => $userid); } else { $where = array('userid' => $userid, 'siteid' => $siteid); } $memberinfo = $this->db->get_one($where); if (empty($memberinfo)) { showmessage(L('user_not_exist') . L('or') . L('no_permission'), HTTP_REFERER); } $memberinfo['avatar'] = get_memberavatar($memberinfo['phpssouid'], '', 90); $modelid = isset($_GET['modelid']) ? $_GET['modelid'] : $memberinfo['modelid']; //获取会员模型表单 require CACHE_MODEL_PATH . 'member_form.class.php'; $member_form = new member_form($modelid); $form_overdudate = form::date('info[overduedate]', date('Y-m-d H:i:s', $memberinfo['overduedate']), 1); $this->db->set_model($modelid); $membermodelinfo = $this->db->get_one(array('userid' => $userid)); $forminfos = $forminfos_arr = $member_form->get($membermodelinfo); //万能字段过滤 foreach ($forminfos as $field => $info) { if ($info['isomnipotent']) { unset($forminfos[$field]); } else { if ($info['formtype'] == 'omnipotent') { foreach ($forminfos_arr as $_fm => $_fm_value) { if ($_fm_value['isomnipotent']) { $info['form'] = str_replace('{' . $_fm . '}', $_fm_value['form'], $info['form']); } } $forminfos[$field]['form'] = $info['form']; } } } $show_dialog = 1; include $this->admin_tpl('member_edit'); } }
/** * 会员注册 */ public function register() { if (!$this->member_setting['allowregister']) { // 判断是否允许注册 showmessage(L('deny_register'), U('member/passport/login')); } header("Cache-control: private"); if (isset($_POST['dosubmit'])) { // 验证码 if ($this->member_setting['enablcodecheck'] == '1') { // 开启验证码 if (!isset($_SESSION['connectid']) && (!isset($_POST['code']) && !checkcode($_POST['code']))) { showmessage(L('code_error')); } } // 组织用户数据 $userinfo = array(); $userinfo['username'] = isset($_POST['username']) && trim($_POST['username']) ? trim($_POST['username']) : showmessage(L('username_empty'), HTTP_REFERER); $userinfo['password'] = isset($_POST['password']) && trim($_POST['password']) ? trim($_POST['password']) : showmessage(L('password_empty'), HTTP_REFERER); $userinfo['email'] = isset($_POST['email']) && trim($_POST['email']) ? trim($_POST['email']) : showmessage(L('email_empty'), HTTP_REFERER); $userinfo['modelid'] = isset($_POST['modelid']) ? intval($_POST['modelid']) : 5; $userinfo['encrypt'] = String::rand_string(6); $userinfo['point'] = $this->member_setting['defualtpoint'] ? $this->member_setting['defualtpoint'] : 0; $userinfo['amount'] = $this->member_setting['defualtamount'] ? $this->member_setting['defualtamount'] : 0; $userinfo['mobile'] = ""; if ($this->member_setting['validation'] == 1) { // 是否需要邮件验证 $userinfo['groupid'] = 3; } elseif ($this->member_setting['validation'] == 2) { // 是否需要管理员审核 $userinfo['modelinfo'] = isset($_POST['info']) ? array2string($_POST['info']) : ''; $this->verify_db = Loader::model('member_verify_model'); $this->verify_db->insert($userinfo); showmessage(L('operation_success'), U('member/passport/verify', array('t' => 2)), 301); } else { // 查看当前模型是否开启了短信验证功能 $model_field_cache = S('model/member_field_' . $userinfo['modelid']); if (isset($model_field_cache['mobile']) && $model_field_cache['mobile']['disabled'] == 0) { } $userinfo['groupid'] = $this->api->_get_usergroup_bypoint($userinfo['point']); } // 开始注册会员 $userid = $this->api->add($userinfo); if ($userid > 0) { // 如果开启选择模型通过模型获取会员信息 if ($this->member_setting['choosemodel'] && isset($_POST['info'])) { require_once CACHE_MODEL_PATH . 'member_input.php'; require_once CACHE_MODEL_PATH . 'member_update.php'; $member_input = new member_input($userinfo['modelid']); $user_model_info = $member_input->get($_POST['info']); $user_model_info['userid'] = $userid; // 插入会员模型数据 $this->db->set_model($userinfo['modelid']); $this->db->insert($user_model_info, true, true); } // 执行登陆操作 $_cookietime = cookie('cookietime') ? cookie('cookietime') : 0; $cookietime = $_cookietime ? TIME + $_cookietime : 0; if ($userinfo['groupid'] == 3 && $this->member_setting['validation'] == 1) { // 如果需要邮箱认证 cookie('_username', $userinfo['username'], $cookietime); cookie('email', $userinfo['email'], $cookietime); $code = String::authcode($userid, 'ENCODE', $this->auth_key); $url = SITE_URL . "index.php?app=member&controller=passport&action=verify&code={$code}&verify=1"; $message = $this->member_setting['registerverifymessage']; $message = str_replace(array('{click}', '{url}'), array('<a href="' . $url . '">' . L('please_click') . '</a>', $url), $message); sendmail($userinfo['email'], L('reg_verify_email'), $message); // 设置当前注册账号COOKIE,为第二步重发邮件所用 cookie('_regusername', $userinfo['username'], $cookietime); cookie('_reguserid', $userid, $cookietime); showmessage(L('operation_success'), U('member/passport/verify', array('t' => 1)), 301); } else { $yuncms_auth = String::authcode($userid . "\t" . $userinfo['password'], 'ENCODE', $this->auth_key); $nickname = empty($userinfo['nickname']) ? $userinfo['username'] : $userinfo['nickname']; cookie('auth', $yuncms_auth, $cookietime); cookie('_userid', $userid, $cookietime); cookie('_username', $userinfo['username'], $cookietime); cookie('_groupid', $userinfo['groupid'], $cookietime); cookie('_nickname', $nickname, $cookietime); cookie('cookietime', $_cookietime, $cookietime); showmessage(L('operation_success'), U('member/index/init'), 301); } } else { switch ($userid) { case '-1': showmessage(L('username_illegal'), HTTP_REFERER); // 用户名不合法 break; case '-2': showmessage(L('username_deny'), HTTP_REFERER); // 用户名包含不允许注册的词语 break; case '-3': showmessage(L('member_exist'), HTTP_REFERER); // 用户名已存在 break; case '-4': showmessage(L('email_illegal'), HTTP_REFERER); // E-mail不合法 break; case '-5': showmessage(L('email_deny'), HTTP_REFERER); // E-mail不允许注册 break; case '-6': showmessage(L('email_already_exist'), HTTP_REFERER); // 该Email已经被注册 break; default: showmessage(L('operation_failure'), HTTP_REFERER); break; } } } else { $modellist = S('common/member_model'); if (empty($modellist)) { showmessage(L('site_have_no_model') . L('deny_register'), HTTP_REFERER); } // 是否开启选择会员模型选项 if ($this->member_setting['choosemodel']) { $first_model = array_pop(array_reverse($modellist)); $modelid = isset($_GET['modelid']) ? intval($_GET['modelid']) : $first_model['modelid']; if (array_key_exists($modelid, $modellist)) { // 获取会员模型表单 require CACHE_MODEL_PATH . 'member_form.php'; $member_form = new member_form($modelid); $this->db->set_model($modelid); $forminfos = $forminfos_arr = $member_form->get(); // 万能字段过滤 foreach ($forminfos as $field => $info) { if ($info['isomnipotent']) { unset($forminfos[$field]); } else { if ($info['formtype'] == 'omnipotent') { foreach ($forminfos_arr as $_fm => $_fm_value) { if ($_fm_value['isomnipotent']) { $info['form'] = str_replace('{' . $_fm . '}', $_fm_value['form'], $info['form']); } } $forminfos[$field]['form'] = $info['form']; } } } $formValidator = $member_form->formValidator; } } $description = $modellist[$modelid]['description']; $member_setting = $this->member_setting; include template('member', 'register'); } }
/** * 修改会员 */ public function edit() { if (isset($_POST['dosubmit'])) { $memberinfo = $info = array(); $basicinfo['userid'] = $_POST['info']['userid']; $basicinfo['username'] = $_POST['info']['username']; $basicinfo['mobile'] = $_POST['info']['mobile']; $basicinfo['nickname'] = $_POST['info']['nickname']; $basicinfo['email'] = $_POST['info']['email']; $basicinfo['point'] = $_POST['info']['point']; $basicinfo['password'] = $_POST['info']['password']; $basicinfo['groupid'] = $_POST['info']['groupid']; $basicinfo['modelid'] = $_POST['info']['modelid']; $basicinfo['vip'] = isset($_POST['info']['vip']) ? intval($_POST['info']['vip']) : 0; $basicinfo['overduedate'] = isset($_POST['info']['overduedate']) && !empty($_POST['info']['overduedate']) ? strtotime($_POST['info']['overduedate']) : 0; // 会员基本信息 $info = $this->_checkuserinfo($basicinfo, 1); // 会员模型信息 $modelinfo = array_diff($_POST['info'], $info); // 过滤vip过期时间 unset($modelinfo['overduedate']); unset($modelinfo['pwdconfirm']); $userid = $info['userid']; $userinfo = $this->db->getby_userid($userid); if (empty($userinfo)) { showmessage(L('user_not_exist') . L('or') . L('no_permission'), HTTP_REFERER); } // 删除用户头像 if (!empty($_POST['delavatar'])) { if (ucenter_exists()) { Loader::lib('member:uc_client')->uc_user_deleteavatar($userinfo['ucenterid']); } else { $dir1 = ceil($userinfo['userid'] / 10000); $dir2 = ceil($userinfo['userid'] % 10000 / 1000); // 图片存储文件夹 $avatarfile = DATA_PATH . 'avatar/'; $dir = $avatarfile . $dir1 . '/' . $dir2 . '/' . $userinfo['userid'] . '/'; $this->db->where(array('userid' => $userinfo['userid']))->update(array('avatar' => 0)); if (file_exists($dir)) { if ($handle = opendir($dir)) { while (false !== ($file = readdir($handle))) { if ($file !== '.' && $file !== '..') { @unlink($dir . $file); } } closedir($handle); @rmdir($dir); } } } } if (ucenter_exists()) { $res = Loader::lib('member:uc_client')->uc_user_edit($info['username'], '', $info['password'], $info['email'], 1); if ($res < 0) { showmessage(L('ucenter_operation_failure'), HTTP_REFERER); } } unset($info['userid']); unset($info['username']); // 如果密码不为空,修改用户密码。 if (isset($info['password']) && !empty($info['password'])) { $info['password'] = password($info['password'], $userinfo['encrypt']); } else { unset($info['password']); } $this->db->where(array('userid' => $userid))->update($info); require_once CACHE_MODEL_PATH . 'member_input.php'; require_once CACHE_MODEL_PATH . 'member_update.php'; $member_input = new member_input($basicinfo['modelid']); $modelinfo = $member_input->get($modelinfo); // 更新模型表,方法更新了$this->table $this->db->set_model($info['modelid']); $userinfo = $this->db->getby_userid($userid); if ($userinfo) { if ($modelinfo) { $this->db->where(array('userid' => $userid))->update($modelinfo); } } else { $modelinfo['userid'] = $userid; $this->db->insert($modelinfo); } showmessage(L('operation_success'), U('member/member/manage'), '', 'edit'); } else { $show_header = $show_scroll = true; $userid = isset($_GET['userid']) ? $_GET['userid'] : showmessage(L('illegal_parameters'), HTTP_REFERER); // 会员组缓存 $group_cache = S('member/grouplist'); foreach ($group_cache as $_key => $_value) { $grouplist[$_key] = $_value['name']; } // 会员模型缓存 $member_model_cache = S('common/member_model'); foreach ($member_model_cache as $_key => $_value) { $modellist[$_key] = $_value['name']; } $memberinfo = $this->db->getby_userid($userid); if (empty($memberinfo)) { showmessage(L('user_not_exist') . L('or') . L('no_permission'), HTTP_REFERER); } $memberinfo['avatar'] = get_memberavatar($memberinfo['userid'], 90); $modelid = isset($_GET['modelid']) ? $_GET['modelid'] : $memberinfo['modelid']; // 获取会员模型表单 require CACHE_MODEL_PATH . 'member_form.php'; $member_form = new member_form($modelid); $form_overdudate = Form::date('info[overduedate]', isset($memberinfo['overduedate']) && !empty($memberinfo['overduedate']) ? date('Y-m-d H:i:s', $memberinfo['overduedate']) : '', 1); $this->db->set_model($modelid); $membermodelinfo = $this->db->getby_userid($userid); $forminfos = $forminfos_arr = $member_form->get($membermodelinfo); // 万能字段过滤 foreach ($forminfos as $field => $info) { if ($info['isomnipotent']) { unset($forminfos[$field]); } else { if ($info['formtype'] == 'omnipotent') { foreach ($forminfos_arr as $_fm => $_fm_value) { if ($_fm_value['isomnipotent']) { $info['form'] = str_replace('{' . $_fm . '}', $_fm_value['form'], $info['form']); } } $forminfos[$field]['form'] = $info['form']; } } } $show_dialog = 1; include $this->view('member_edit'); } }
public function account_manage_info() { if(isset($_POST['dosubmit'])) { //更新用户昵称 $nickname = isset($_POST['nickname']) && trim($_POST['nickname']) ? trim($_POST['nickname']) : ''; if($nickname) { $this->db->update(array('nickname'=>$nickname), array('userid'=>$this->memberinfo['userid'])); if(!isset($cookietime)) { $get_cookietime = param::get_cookie('cookietime'); } $_cookietime = $cookietime ? intval($cookietime) : ($get_cookietime ? $get_cookietime : 0); $cookietime = $_cookietime ? TIME + $_cookietime : 0; param::set_cookie('_nickname', $nickname, $cookietime); } require_once CACHE_MODEL_PATH.'member_input.class.php'; require_once CACHE_MODEL_PATH.'member_update.class.php'; $member_input = new member_input($this->memberinfo['modelid']); $modelinfo = $member_input->get($_POST['info']); $this->db->set_model($this->memberinfo['modelid']); $membermodelinfo = $this->db->get_one(array('userid'=>$this->memberinfo['userid'])); if(!empty($membermodelinfo)) { $this->db->update($modelinfo, array('userid'=>$this->memberinfo['userid'])); } else { $modelinfo['userid'] = $this->memberinfo['userid']; $this->db->insert($modelinfo); } showmessage(L('operation_success'), HTTP_REFERER); } else { $memberinfo = $this->memberinfo; //获取会员模型表单 require CACHE_MODEL_PATH.'member_form.class.php'; $member_form = new member_form($this->memberinfo['modelid']); $this->db->set_model($this->memberinfo['modelid']); $membermodelinfo = $this->db->get_one(array('userid'=>$this->memberinfo['userid'])); $forminfos = $forminfos_arr = $member_form->get($membermodelinfo); //万能字段过滤 foreach($forminfos as $field=>$info) { if($info['isomnipotent']) { unset($forminfos[$field]); } else { if($info['formtype']=='omnipotent') { foreach($forminfos_arr as $_fm=>$_fm_value) { if($_fm_value['isomnipotent']) { $info['form'] = str_replace('{'.$_fm.'}',$_fm_value['form'], $info['form']); } } $forminfos[$field]['form'] = $info['form']; } } } $formValidator = $member_form->formValidator; include template('member', 'account_manage_info'); } }