Esempio n. 1
0
 function sendMsgToOpt()
 {
     $url = $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_message', 'act' => 'index'));
     $msgshow = $this->app->getConf('comment.verifyCode.discuss') ? $this->app->getConf('comment.verifyCode.discuss') : 'on';
     $power = $this->app->getConf('system.message.power') ? $this->app->getConf('system.message.power') : 'member';
     if (!$this->check_login() && $power == 'member') {
         $this->splash('failed', $url, app::get('b2c')->_('仅注册会员才可发表'), '', '', true);
     }
     if ($msgshow === "on") {
         if (!base_vcode::verify('MESSAGEVCODE', intval($_POST['verifyCode']))) {
             $this->splash('failed', $url, app::get('b2c')->_('验证码填写错误'), '', '', true);
         }
     }
     $display = $this->app->getConf('comment.display.discuss') ? $this->app->getConf('comment.display.discuss') : 'reply';
     if ($display == "soon") {
         $_POST['display'] = "true";
     } else {
         $_POST['display'] = "false";
     }
     $member_data = $this->get_current_member();
     $objMessage = kernel::single('b2c_message_message');
     $_POST['ip'] = $_SERVER["REMOTE_ADDR"];
     if ($objMessage->send($_POST, $member_data)) {
         $this->splash('success', $url, app::get('b2c')->_('发表成功!'), '', '', true);
     } else {
         $this->splash('failed', $url, app::get('b2c')->_('发表失败!'), '', '', true);
     }
 }
Esempio n. 2
0
 function login($auth, &$usrdata)
 {
     if ($auth->is_enable_vcode()) {
         if ($auth->type == 'shopadmin') {
             $key = "DESKTOPVCODE";
         } else {
             $key = "MEMBERVCODE";
         }
         if (!base_vcode::verify($key, intval($_POST['verifycode']))) {
             $usrdata['log_data'] = __('用户') . $_POST['uname'] . __('验证码不正确!');
             $_SESSION['error'] = __('用户') . $_POST['uname'] . __('验证码不正确!');
             return false;
         }
     }
     $rows = app::get('pam')->model('account')->getList('*', array('login_name' => $_POST['uname'], 'login_password' => md5($_POST['password']), 'account_type' => $auth->type, 'disabled' => 'false'), 0, 1);
     if ($rows[0]) {
         if ($_POST['remember'] === "true") {
             setcookie('pam_passport_basic_uname', $_POST['uname'], time() + 365 * 24 * 3600, '/');
         } else {
             setcookie('pam_passport_basic_uname', '', 0, '/');
         }
         $usrdata['log_data'] = __('用户') . $_POST['uname'] . __('验证成功!');
         return $rows[0]['account_id'];
     } else {
         $usrdata['log_data'] = __('用户') . $_POST['uname'] . __('验证失败!');
         $_SESSION['error'] = __('用户名或密码错误');
         return false;
     }
 }
Esempio n. 3
0
 public function vcode_verify($vcode)
 {
     if (!base_vcode::verify('b2c', $vcode)) {
         return false;
     }
     return true;
 }
Esempio n. 4
0
 private function _check_vcode($item, $_POST)
 {
     if ($this->app->getConf('comment.verifyCode') != "on") {
         return true;
     }
     $flag = true;
     switch ($item) {
         case 'ask':
             if (!base_vcode::verify('ASKVCODE', $_POST['askverifyCode'])) {
                 $flag = false;
             }
             break;
         case 'discuss':
             if (!base_vcode::verify('DISSVCODE', $_POST['discussverifyCode'])) {
                 $flag = false;
             }
             break;
         case 'reply':
             if (!base_vcode::verify('REPLYVCODE', $_POST['replyverifyCode'])) {
                 $flag = false;
             }
             break;
     }
     if (!$flag) {
         $this->splash('error', '', app::get('b2c')->_('验证码填写错误'), true);
     }
     return $flag;
 }
Esempio n. 5
0
 /**
  * 检查注册POST的数据
  */
 public function check_signup($data, &$msg)
 {
     $data = $this->obj_filter->check_input($data);
     //验证码
     $valideCode = $this->app->getConf('site.register_valide');
     $login_type = $this->get_login_account_type($data['pam_account']['login_name']);
     if ($valideCode == 'true' && $login_type != 'mobile') {
         if (!base_vcode::verify('LOGINVCODE', $data['signupverifycode'])) {
             $msg = $this->app->_('验证码填写错误');
             return false;
         }
     }
     if ($_POST['license'] != 'on') {
         $msg = $this->app->_('同意注册条款后才能注册');
         return false;
     }
     //检查注册账号合法性
     if (!$this->check_signup_account(trim($data['pam_account']['login_name']), $msg)) {
         return false;
     }
     if ($login_type == 'mobile') {
         $res = kernel::single('b2c_user_vcode')->verify($data['vcode'], $data['pam_account']['login_name'], 'signup');
         if (!$res) {
             $msg = $this->app->_('短信验证错误');
             return false;
         }
     }
     //检查密码合法,是否一致
     if (!$this->check_passport($data['pam_account']['login_password'], $data['pam_account']['psw_confirm'], $msg)) {
         return false;
     }
     return true;
 }
Esempio n. 6
0
File: basic.php Progetto: noikiy/snk
 public function seller_login($userData, $vcode = false, &$msg)
 {
     $userData = utils::_filter_input($userData);
     //过滤xss攻击
     if (!$vcode || !base_vcode::verify('passport', $vcode)) {
         $msg = '验证码错误';
         return false;
     }
     //如果指定了登录类型,则不再进行获取(邮箱登录,手机号登录,用户名登录)
     if (!$userData['login_type']) {
         $userPassport = vmc::singleton('seller_user_passport');
         $userData['login_type'] = $userPassport->get_login_account_type($userData['login_name']);
     }
     $filter = array('login_type' => $userData['login_type'], 'login_name' => $userData['login_name']);
     $account = app::get('seller')->model('sellers')->getList('member_id, login_name, createtime', $filter);
     if (!$account) {
         $msg = '不存在的用户';
         return false;
     }
     $login_password = pam_encrypt::get_encrypted_password($userData['login_password'], 'member', array('createtime' => $account[0]['createtime'], 'login_name' => $account[0]['login_name']));
     if ($account[0]['login_password'] != $login_password) {
         $msg = '登录密码错误';
         return false;
     }
     return $account[0]['member_id'];
 }
Esempio n. 7
0
 public function login($userData, $vcode = false, &$msg, $type = 'b2c')
 {
     $userData = utils::_filter_input($userData);
     //过滤xss攻击
     //快速登录不用验证码
     if ($vcode != 'quick') {
         if (!$vcode || !base_vcode::verify('passport', $vcode)) {
             $msg = '验证码错误';
             return false;
         }
     }
     //如果指定了登录类型,则不再进行获取(邮箱登录,手机号登录,用户名登录)
     if (!$userData['login_type']) {
         $userPassport = vmc::singleton('b2c_user_passport');
         $userData['login_type'] = $userPassport->get_login_account_type($userData['login_account']);
     }
     $filter = array('login_type' => $userData['login_type'], 'login_account' => $userData['login_account']);
     $model = 'members';
     $id = 'member_id';
     if ($type == 'sellers') {
         $model = 'sellers';
         $id = 'seller_id';
     }
     $account = app::get('pam')->model($model)->getList($id . ',password_account,login_password,createtime', $filter);
     if (!$account) {
         $msg = '不存在的用户';
         return false;
     }
     $login_password = pam_encrypt::get_encrypted_password($userData['login_password'], 'member', array('createtime' => $account[0]['createtime'], 'login_name' => $account[0]['password_account']));
     if ($account[0]['login_password'] != $login_password) {
         $msg = '登录密码错误';
         return false;
     }
     return $account[0][$id];
 }
Esempio n. 8
0
 public function login()
 {
     if (pamAccount::isEnableVcode('desktop')) {
         if (!base_vcode::verify($this->app->app_id, $_POST['verifycode'])) {
             $msg = app::get('desktop')->_('验证码不正确!');
             $this->__loginLog($msg);
             $url = url::route('shopadmin', array('ctl' => 'passport', 'act' => 'index', 'url' => input::get('redirect'), 'msg' => urlencode($msg)));
             echo "<script>location ='{$url}'</script>";
             exit;
         }
     }
     try {
         kernel::single('desktop_passport')->login(input::get());
         $msg = app::get('desktop')->_('验证成功');
         $this->__loginLog($msg);
     } catch (Exception $e) {
         $msg = $e->getMessage();
         $this->__loginLog($msg);
         $url = url::route('shopadmin', array('ctl' => 'passport', 'act' => 'index', 'url' => input::get('redirect'), 'msg' => urlencode($msg)));
         echo "<script>location ='{$url}'</script>";
         exit;
     }
     $params['member_id'] = pamAccount::getAccountId();
     $params['uname'] = pamAccount::getLoginName();
     foreach (kernel::servicelist('desktop_login_listener') as $service) {
         $service->listener_login($params);
     }
     if (input::get('remember') === "true") {
         setcookie('pam_passport_basic_uname', input::get('uname'), time() + 365 * 24 * 3600, '/');
     } else {
         setcookie('pam_passport_basic_uname', '', 0, '/');
     }
     if ($_COOKIE['autologin'] > 0) {
         kernel::single('base_session')->set_cookie_expires($_COOKIE['autologin']);
         //如果自动登录,设置cookie过期时间,单位:分
     }
     if ($_COOKIE['S']['SIGN']['AUTO'] > 0) {
         $minutes = 10 * 24 * 60;
         kernel::single('base_session')->set_cookie_expires($minutes);
     }
     header('Location:' . base64_decode(str_replace('%2F', '/', urldecode(input::get('redirect')))) . $url);
     exit;
 }
Esempio n. 9
0
 /**
  * 认证用户名密码以及验证码等
  * @param object $auth pam_auth对象
  * @param array $usrdata 认证提示信息
  * @return bool|int返回认证成功与否
  */
 function login($auth, &$usrdata)
 {
     if ($auth->is_enable_vcode()) {
         $key = $auth->appid;
         if (!base_vcode::verify($key, intval($_POST['verifycode']))) {
             $usrdata['log_data'] = app::get('pam')->_('验证码不正确!');
             $_SESSION['error'] = app::get('pam')->_('验证码不正确!');
             return false;
         }
     }
     $password_string = pam_encrypt::get_encrypted_password($_POST['password'], $auth->type, array('login_name' => $_POST['uname']));
     if (!$_POST['uname'] || !$password_string || $_POST['password'] !== '0' && !$_POST['password']) {
         $usrdata['log_data'] = app::get('pam')->_('验证失败!');
         $_SESSION['error'] = app::get('pam')->_('用户名或密码错误');
         $_SESSION['error_count'][$auth->appid] = $_SESSION['error_count'][$auth->appid] + 1;
         return false;
     }
     $rows = app::get('pam')->model('account')->getList('*', array('login_name' => $_POST['uname'], 'login_password' => $password_string, 'account_type' => $auth->type, 'disabled' => 'false'), 0, 1);
     if ($rows[0]) {
         if ($_POST['remember'] === "true") {
             setcookie('pam_passport_basic_uname', $_POST['uname'], time() + 365 * 24 * 3600, '/');
         } else {
             setcookie('pam_passport_basic_uname', '', 0, '/');
         }
         $usrdata['log_data'] = app::get('pam')->_('用户') . $_POST['uname'] . app::get('pam')->_('验证成功!');
         unset($_SESSION['error_count'][$auth->appid]);
         if (substr($rows[0]['login_password'], 0, 1) !== 's') {
             $pam_filter = array('account_id' => $rows[0]['account_id']);
             $string_pass = md5($rows[0]['login_password'] . $rows[0]['login_name'] . $rows[0]['createtime']);
             $update_data['login_password'] = '******' . substr($string_pass, 0, 31);
             app::get('pam')->model('account')->update($update_data, $pam_filter);
         }
         return $rows[0]['account_id'];
     } else {
         $usrdata['log_data'] = app::get('pam')->_('用户') . $_POST['uname'] . app::get('pam')->_('验证失败!');
         $_SESSION['error'] = app::get('pam')->_('用户名或密码错误');
         $_SESSION['error_count'][$auth->appid] = $_SESSION['error_count'][$auth->appid] + 1;
         return false;
     }
 }
Esempio n. 10
0
 function sendMsgToOpt()
 {
     $url = $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_message', 'act' => 'index'));
     $msgshow = $this->app->getConf('message_verifyCode') ? $this->app->getConf('message_verifyCode') : "on";
     if ($msgshow === "on") {
         if (!base_vcode::verify('MESSAGEVCODE', intval($_POST['verifyCode']))) {
             $this->splash('failed', $url, __('验证码填写错误'));
         }
     }
     if ($this->app->getConf('system.message.open') == "on") {
         $_POST['display'] = "true";
     } else {
         $_POST['display'] = "false";
     }
     $member_data = $this->get_current_member();
     $objMessage = kernel::single('b2c_message_message');
     $_POST['ip'] = $_SERVER["REMOTE_ADDR"];
     if ($objMessage->send($_POST, $member_data)) {
         $this->splash('success', $url, __('发表成功!'));
     } else {
         $this->splash('failed', $url, __('发表失败!'));
     }
 }
Esempio n. 11
0
 public function bindSignupUser()
 {
     $params = input::get();
     $verifyCode = $params['verifycode'];
     $verifyKey = $params['vcodekey'];
     $loginName = $params['pam_account']['login_name'];
     $password = $params['pam_account']['login_password'];
     $confirmedPassword = $params['pam_account']['psw_confirm'];
     if (!$verifyKey || empty($verifyCode) || !base_vcode::verify($verifyKey, $verifyCode)) {
         $msg = app::get('topc')->_('验证码填写错误');
         return $this->splash('error', null, $msg, true);
     }
     try {
         $userId = userAuth::signUp($loginName, $password, $confirmedPassword);
         userAuth::login($userId, $loginName);
         kernel::single('pam_trust_user')->bind(userAuth::id());
         $url = url::action('topc_ctl_default@index');
         return $this->splash('success', $url, $msg, true);
     } catch (\Exception $e) {
         $msg = $e->getMessage();
         return $this->splash('error', null, $msg, true);
     }
 }
Esempio n. 12
0
 function toReply($comment_id = null)
 {
     if ($_POST['shaidan_noajax'] == 'true') {
         $shaidan_noajax = false;
     } else {
         $shaidan_noajax = true;
     }
     if (!$comment_id) {
         header('Content-Type:text/jcmd; charset=utf-8');
         echo '{error:"' . app::get('b2c')->_('参数错误') . '",_:null}';
         exit;
     }
     $member_data = $this->get_current_member();
     $objComment = kernel::single('b2c_message_disask');
     $aComment = $objComment->dump($comment_id);
     $url = $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_product', 'act' => 'index', 'arg' => $aComment['type_id']));
     if ($_POST['shaidan_comment_id']) {
         $url = $this->gen_url(array('app' => 'shaidan', 'ctl' => 'site_comment', 'act' => 'shaidanItem', 'arg' => $_POST['shaidan_comment_id'], 'arg1' => $_POST['shaidan_goods_id']));
     }
     if (!$aComment) {
         header('Content-Type:text/jcmd; charset=utf-8');
         echo '{error:"' . app::get('b2c')->_('记录为空') . '",_:null}';
         exit;
     }
     if ($this->app->getConf('comment.verifyCode.' . 'ask') == "on" && $shaidan_noajax) {
         if (!base_vcode::verify('REPLYVCODE', intval($_POST['replyverifyCode']))) {
             header('Content-Type:text/jcmd; charset=utf-8');
             echo '{error:"' . app::get('b2c')->_('验证码填写错误') . '",_:null}';
             exit;
         }
     }
     if (!$objComment->toValidate($aComment['object_type'], $aComment['goods_id'], $member_data, $message)) {
         if (!$shaidan_noajax) {
             $this->splash('failed', 'back', $message, '', '', $shaidan_noajax);
         } else {
             header('Content-Type:text/jcmd; charset=utf-8');
             echo '{error:"' . $message . '",_:null}';
             exit;
         }
     } else {
         $aData['comment'] = $_POST['comment'];
         $aData['hidden_name'] = $_POST['hidden_name'];
         $aData['type_id'] = $aComment['type_id'];
         $aData['for_comment_id'] = $comment_id;
         $aData['author_id'] = $member_data['member_id'] ? $member_data['member_id'] : 0;
         $aData['mem_read_status'] = $this->member['member_id'] == $aComment['author_id'] ? 'false' : 'true';
         $aData['object_type'] = $aComment['object_type'];
         $aData['author'] = $member_data['uname'] ? $member_data['uname'] : app::get('b2c')->_('非会员顾客');
         $aData['contact'] = $_POST['contact'] == '' ? $member_data['email'] : $_POST['contact'];
         $aData['to_id'] = $aComment['to_id'];
         $aData['time'] = time();
         $aData['lastreply'] = time();
         $aData['reply_name'] = $aData['author'];
         $aData['display'] = $this->app->getConf('comment.display.' . $aComment['object_type']) == 'soon' ? 'true' : 'false';
         if ($objComment->send($aData, $aComment['object_type'])) {
             $comments = $this->app->model('member_comments');
             if ($aComment['object_type'] == 'discuss') {
                 $comments->fireEvent('discussreply', $aData, $aData['author_id']);
             } elseif ($aComment['object_type'] == 'ask') {
                 $comments->fireEvent('gaskreply', $aData, $aData['author_id']);
             }
             $this->splash('success', $url, app::get('b2c')->_('发表成功!'), '', '', $shaidan_noajax);
         } else {
             $this->splash('failed', 'back', app::get('b2c')->_('发表失败!'), '', '', $shaidan_noajax);
         }
     }
 }
Esempio n. 13
0
 public function create()
 {
     $data = utils::_filter_input(input::get());
     $codyKey = $data['key'];
     $verifycode = $data['verifycode'];
     $userInfo = $data['pam_user'];
     $vcode = $data['vcode'];
     //数据检测
     $validator = validator::make(['loginAccount' => $userInfo['account'], 'license' => input::get('license'), 'password' => $userInfo['password'], 'password_confirmation' => $userInfo['pwd_confirm']], ['loginAccount' => 'required', 'license' => 'required', 'password' => 'min:6|max:20|confirmed', 'password_confirmation' => 'required'], ['loginAccount' => '请输入用户名!', 'license' => '请阅读并接受会员注册协议!', 'password' => '密码长度不能小于6位!|密码长度不能大于20位!|输入的密码不一致!', 'password_confirmation' => '确认密码不能为空!']);
     if ($validator->fails()) {
         $messages = $validator->messagesInfo();
         foreach ($messages as $error) {
             throw new LogicException($error[0]);
         }
     }
     try {
         $accountType = kernel::single('pam_tools')->checkLoginNameType($userInfo['account']);
         if ($accountType == "mobile") {
             $vcodeData = userVcode::verify($vcode, $userInfo['account'], 'signup');
             if (!$vcodeData) {
                 throw new \LogicException(app::get('topc')->_('手机验证码错误'));
             }
         } else {
             if (empty($verifycode) || !base_vcode::verify($codyKey, $verifycode)) {
                 throw new \LogicException(app::get('topc')->_('验证码填写错误'));
             }
         }
         $userId = userAuth::signUp($userInfo['account'], $userInfo['password'], $userInfo['pwd_confirm']);
         userAuth::login($userId, $userInfo['account']);
     } catch (Exception $e) {
         $msg = $e->getMessage();
         return $this->splash('error', $url, $msg, true);
     }
     // 跳成功页
     $url = url::action('topc_ctl_passport@signupSuccess', ['next_page' => $this->__getFromUrl()]);
     return $this->splash('success', $url, null, true);
 }
Esempio n. 14
0
 function gc_dopayment($pay_object = 'giftcard')
 {
     $this->path[] = array('title' => app::get('b2c')->_('会员中心'), 'link' => $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_member', 'act' => 'index', 'full' => 1)));
     $this->path[] = array('title' => app::get('b2c')->_('我的预存款'), 'link' => '#');
     if ($_POST['is_store'] == 1) {
         $this->begin($this->gen_url(array('app' => 'b2c', 'ctl' => 'site_cart')) . "?type=x");
     } else {
         $this->begin($this->gen_url(array('app' => 'b2c', 'ctl' => 'site_member', 'act' => 'giftcard', 'arg0' => time())));
     }
     //验证验证码
     if ($_POST["verifycode"]) {
         if (!base_vcode::verify('GIFTCARDCODE', $_POST['verifycode'])) {
             $msg = app::get('b2c')->_("验证码输入错误!");
             $this->splash('failed', $url, $msg);
             exit;
         }
     }
     if ('giftcard' == $pay_object) {
         $memMdl = $this->app->model('members');
         $giftcardMdl = app::get('b2c')->model('member_giftcard');
         $gcard_code = $_POST['giftcard']['gcard_code'];
         $member_id = $this->app->member_id;
         if ($memMdl->gc_validate($gcard_code, $msg)) {
             //验证成功清除session
             $_SESSION['giftcard'][$member_id] = 0;
             //处理充值
             $gc_info = $giftcardMdl->getList('*', array('gcard_code' => $gcard_code));
             $gc_info = $gc_info[0];
             $advanceMdl = app::get('b2c')->model('member_advance');
             $pam_account = app::get('pam')->model('account');
             $account = $pam_account->getList("login_name", array('account_id' => $member_id));
             $u_name = $account[0]['login_name'];
             $message = '充值券充值,券号:' . $gcard_code;
             //标记充值券已使用
             $is_true = $giftcardMdl->update(array('used_status' => 'true', 'uname' => $u_name, 'used_time' => time()), array('gcard_code' => $gcard_code));
             $affect_row = $advanceMdl->db->affect_row();
             if ($is_true) {
                 //开始事务
                 $db = kernel::database();
                 $transaction_status = $db->beginTransaction();
                 if ($affect_row) {
                     $db->commit($transaction_status);
                     //金额写入预存款
                     $branch_id = intval($_SESSION['local_store']['branch_id']);
                     $rerurn = $advanceMdl->add($member_id, $gc_info['gcard_money'], $message, $errMsg, '', '', 'chongzhiquan', '', 0, true, $branch_id);
                     if ($rerurn) {
                         // 增加经验值
                         $obj_member = $this->app->model('members');
                         $obj_member->change_exp($member_id, floor($gc_info['gcard_money']));
                         $this->end(true, app::get('b2c')->_('充值券充值成功!'));
                     } else {
                         $db->rollback();
                         $this->end(false, $errMsg);
                     }
                 } else {
                     $db->rollback();
                     $this->end(false, app::get('b2c')->_('您发出了重复的请求,该请求只能生效一次!'));
                 }
             } else {
                 //事件回滚
                 $db->rollback();
                 $this->end(false, app::get('b2c')->_('充值券状态更新失败!'));
             }
         } else {
             $this->end(false, $msg);
         }
     }
 }
Esempio n. 15
0
 private function _signup_post($post, $step)
 {
     extract($post);
     $forward = $this->gen_url(array('app' => 'seller', 'ctl' => 'site_passport', 'act' => 'signup', 'args' => array($step)));
     $signup_url = $this->gen_url(array('app' => 'seller', 'ctl' => 'site_passport', 'act' => 'signup', 'args' => array($forward)));
     // 仅手机注册
     if (!base_vcode::verify('sellerpassport', $vcode)) {
         $this->splash('error', $signup_url, '验证码不正确');
     }
     $return = false;
     switch ($step) {
         case 1:
             $return = $this->_signupOne($post, $signup_url);
             break;
         case 2:
             $return = $this->_signupTwo($post);
             break;
         case 3:
             $return = $this->_signupThree($post);
             break;
         case 4:
             $return = $this->_signupFour($post);
             break;
     }
     if ($return) {
         $this->splash('success', $forward, '注册成功');
     } else {
         $this->splash('error', $signup_url, '注册失败,会员数据保存异常');
     }
 }
Esempio n. 16
0
 /**
  * create
  * 创建会员.
  */
 public function create()
 {
     $params = $_POST;
     $forward = $params['forward'];
     if (!$forward) {
         $forward = $this->gen_url(array('app' => 'site', 'ctl' => 'default'));
         //PC首页
     }
     unset($_POST['forward']);
     $signup_url = $this->gen_url(array('app' => 'b2c', 'ctl' => 'mobile_passport', 'act' => 'signup', 'args' => array($forward)));
     $login_type = $this->passport_obj->get_login_account_type($params['pam_account']['login_name']);
     if ($login_type == 'mobile' && !vmc::singleton('b2c_user_vcode')->verify($params['vcode'], $params['pam_account']['login_name'], 'signup')) {
         $this->splash('error', $signup_url, '手机短信验证码不正确');
     } elseif ($login_type != 'mobile' && !base_vcode::verify('passport', $params['vcode'])) {
         $this->splash('error', $signup_url, '验证码不正确');
     }
     if (!$this->passport_obj->check_signup($params, $msg)) {
         $this->splash('error', $signup_url, $msg);
     }
     $member_sdf_data = $this->passport_obj->pre_signup_process($params);
     if ($member_id = $this->passport_obj->save_members($member_sdf_data, $msg)) {
         $this->user_obj->set_member_session($member_id);
         $this->bind_member($member_id);
         /*本站会员注册完成后做某些操作!*/
         foreach (vmc::servicelist('member.create_after') as $object) {
             $object->create_after($member_id);
         }
         $this->splash('success', $forward, '注册成功');
     } else {
         $this->splash('error', $signup_url, '注册失败,会员数据保存异常');
     }
 }
Esempio n. 17
0
 /**
  * create
  * 创建会员
  * 采用事务处理,function save_attr 返回false 立即回滚
  * @access public
  * @return void
  */
 function create($next_url = null)
 {
     $mini = $_GET['mini'];
     //$back_url = $this->gen_url(array('app'=>'b2c','ctl'=>'site_passport','act'=>'signup'));
     $back_url = null;
     if (!preg_match('/^([@\\.]|[^\\x00-\\x2f^\\x3a-\\x40]){2,20}$/i', $_POST['pam_account']['login_name'])) {
         if ($mini != 1) {
             $this->splash('failed', $back_url, app::get('b2c')->_('用户名包含非法字符'), '', '', true);
         } else {
             echo json_encode(array('status' => 'failed', 'url' => 'back', 'msg' => app::get('b2c')->_('用户名包含非法字符')));
             return;
         }
     }
     $next_url = base64_decode($next_url);
     $member_model =& $this->app->model('members');
     $valideCode = app::get('b2c')->getConf('site.register_valide');
     if ($valideCode == 'true') {
         if (!base_vcode::verify('LOGINVCODE', intval($_POST['signupverifycode']))) {
             if ($mini != 1) {
                 $this->splash('failed', $back_url, app::get('b2c')->_('验证码填写错误'), '', '', true);
             } else {
                 echo json_encode(array('status' => 'failed', 'url' => 'back', 'msg' => app::get('b2c')->_('验证码填写错误')));
                 return;
             }
         }
     }
     if ($_POST['license'] != 'agree') {
         if ($mini != 1) {
             $this->splash('failed', $back_url, app::get('b2c')->_('同意注册条款后才能注册'), '', '', true);
         } else {
             echo json_encode(array('status' => 'failed', 'url' => 'back', 'msg' => app::get('b2c')->_('同意注册条款后才能注册')));
             return;
         }
     }
     if (!$member_model->validate($_POST, $msg)) {
         if ($mini != 1) {
             $this->splash('failed', $back_url, $msg, '', '', true);
         } else {
             echo json_encode(array('status' => 'failed', 'url' => 'back', 'msg' => $msg));
             return;
         }
     }
     $lv_model =& $this->app->model('member_lv');
     $_POST['member_lv']['member_group_id'] = $lv_model->get_default_lv();
     $arrDefCurrency = app::get('ectools')->model('currency')->getDefault();
     $_POST['currency'] = $arrDefCurrency['cur_code'];
     $_POST['pam_account']['login_name'] = strtolower($_POST['pam_account']['login_name']);
     $_POST['pam_account']['account_type'] = pam_account::get_account_type($this->app->app_id);
     $_POST['pam_account']['createtime'] = time();
     $use_pass_data['login_name'] = $_POST['pam_account']['login_name'];
     $use_pass_data['createtime'] = $_POST['pam_account']['createtime'];
     $_POST['pam_account']['login_password'] = pam_encrypt::get_encrypted_password(trim($_POST['pam_account']['login_password']), pam_account::get_account_type($this->app->app_id), $use_pass_data);
     $_POST['reg_ip'] = base_request::get_remote_addr();
     $_POST['regtime'] = time();
     $_POST['contact']['email'] = htmlspecialchars($_POST['contact']['email']);
     $db = kernel::database();
     $db->beginTransaction();
     //--防止恶意修改
     foreach ($_POST as $key => $val) {
         if (strpos($key, "box:") !== false) {
             $aTmp = explode("box:", $key);
             $_POST[$aTmp[1]] = serialize($val);
         }
     }
     $arr_colunm = array('regtime', 'member_id', 'license', 'reg_ip', 'currency', 'contact', 'profile', 'pam_account', 'forward', 'member_lv');
     $attr = $this->app->model('member_attr')->getList('attr_column');
     foreach ($attr as $attr_colunm) {
         $colunm = $attr_colunm['attr_column'];
         $arr_colunm[] = $colunm;
     }
     foreach ($_POST as $post_key => $post_value) {
         if (!in_array($post_key, $arr_colunm)) {
             unset($_POST[$post_key]);
         }
     }
     //---end
     if ($member_model->save($_POST)) {
         $member_id = $_POST['member_id'];
         if (!$this->save_attr($member_id, $_POST, $msg)) {
             $db->rollBack();
             if ($mini != 1) {
                 $this->splash('failed', $back_url, $msg, '', '', true);
             } else {
                 echo json_encode(array('status' => 'failed', 'url' => 'back', 'msg' => $msg));
                 return;
             }
         }
         $db->commit();
         $_SESSION['account'][pam_account::get_account_type($this->app->app_id)] = $member_id;
         $this->bind_member($member_id);
         foreach (kernel::servicelist('b2c_save_post_om') as $object) {
             $object->set_arr($member_id, 'member');
             $refer_url = $object->get_arr($member_id, 'member');
         }
         /*注册完成后做某些操作! begin*/
         foreach (kernel::servicelist('b2c_register_after') as $object) {
             $object->registerActive($member_id);
         }
         //增加会员同步 2012-5-15
         if ($member_rpc_object = kernel::service("b2c_member_rpc_sync")) {
             $member_rpc_object->createActive($member_id);
         }
         /*end*/
         $data['member_id'] = $member_id;
         $data['uname'] = $_POST['pam_account']['login_name'];
         $data['passwd'] = $_POST['pam_account']['psw_confirm'];
         $data['email'] = $_POST['contact']['email'];
         $data['refer_url'] = $refer_url ? $refer_url : '';
         $data['is_frontend'] = true;
         $obj_account =& $this->app->model('member_account');
         $obj_account->fireEvent('register', $data, $member_id);
         if ($next_url) {
             header("Location: " . $next_url);
         } else {
             if ($mini != 1) {
                 $this->splash('success', $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_member', 'act' => 'index')), app::get('b2c')->_('注册成功'), '', '', true);
             } else {
                 if (isset($_SESSION['signup_next']) && $_SESSION['signup_next']) {
                     $signup_next = $_SESSION['signup_next'];
                     unset($_SESSION['signup_next']);
                     echo json_encode(array('status' => 'succ', 'url' => $signup_next, 'msg' => app::get('b2c')->_('注册成功')));
                     exit;
                 } else {
                     echo json_encode(array('status' => 'succ', 'url' => $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_member', 'act' => 'index')), 'msg' => app::get('b2c')->_('注册成功')));
                     exit;
                 }
             }
         }
     }
     $this->splash('failed', $back_url, app::get('b2c')->_('注册失败'), '', '', true);
 }
Esempio n. 18
0
 function verify()
 {
     $this->begin($this->gen_url('passport', 'login'));
     $member_model =& $this->app->model('members');
     $verifyCode = app::get('b2c')->getConf('site.register_valide');
     if ($verifyCode == "true") {
         if (!base_vcode::verify('LOGINVCODE', strval($_POST['loginverifycode']))) {
             $this->splash('failed', $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_passport', 'act' => 'index')), app::get('b2c')->_('验证码错误'), true);
         }
     }
     $rows = app::get('pam')->model('account')->getList('account_id', array('account_type' => 'member', 'disabled' => 'false', 'login_name' => $_POST['login'], 'login_password' => pam_encrypt::get_encrypted_password($_POST['passwd'], pam_account::get_account_type($this->app->app_id), array('login_name' => $_POST['login']))));
     if ($rows) {
         $_SESSION['account'][pam_account::get_account_type($this->app->app_id)] = $rows[0]['account_id'];
         $this->bind_member($rows[0]['account_id']);
         $this->end(true, app::get('b2c')->_('登录成功,进入会员中心'), $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_member', 'act' => 'index')));
     } else {
         $_SESSION['login_msg'] = app::get('b2c')->_('用户名或密码错误');
         $this->end(false, $_SESSION['login_msg'], $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_passport', 'act' => 'login')));
     }
 }
Esempio n. 19
0
 /**
  * 联盟商注册提交
  * @access public
  * @version 2 Jul 6, 2011
  */
 public function create()
 {
     //联盟商模型
     $mdlUser = $this->app->model('users');
     //联盟商信息
     $user = $_POST['user'];
     //联盟商网站信息
     $web = $_POST['web'];
     //失败路径
     //$backUrl = $this->gen_url(array('app' => 'cps', 'ctl' => 'site_user', 'act' => 'register'));
     //用户名非法字符检查
     if (!preg_match('/^([@\\.]|[^\\x00-\\x2f^\\x3a-\\x40]){2,20}$/i', $user['u_name'])) {
         $this->splash('failed', $backUrl, $this->app->_('用户名包含非法字符'), '', '', true);
     }
     //验证码验证
     if (!base_vcode::verify('CPSVCODE', $_POST['verifycode'])) {
         $this->splash('failed', $backUrl, $this->app->_('验证码填写错误'), '', '', true);
     }
     //同意联盟协议
     if ($_POST['license'] != 'agree') {
         $this->splash('failed', $backUrl, $this->app->_('同意联盟协议后才能注册'), '', '', true);
     }
     //检验数据
     if (!$mdlUser->validate($user, $msg)) {
         $this->splash('failed', $backUrl, $msg, '', '', true);
     }
     unset($user['passwd_confirm']);
     //md5加密密码
     $user['passwd'] = md5($user['password']);
     //用户名转为小写
     $user['u_name'] = strtolower(trim($user['u_name']));
     //注册ip
     $user['reg_ip'] = base_request::get_remote_addr();
     //注册时间
     $user['regtime'] = time();
     //注册邮箱
     $user['email'] = htmlspecialchars(trim($user['email']));
     //添加union_id
     $user['union_id'] = $mdlUser->genUnionId();
     //开启事务
     $this->begin();
     $pam = array('account_type' => 'cpsuser', 'login_name' => $user['u_name'], 'login_password' => $user['passwd'], 'createtime' => $user['regtime']);
     //pam新增
     $pamId = app::get('pam')->model('account')->insert($pam);
     unset($user['passwd']);
     //联盟商id与pam id关联
     $user['u_id'] = $pamId;
     //获取联盟商审核配置
     $chk = $this->app->model('setting')->getValueByKey('userCheck');
     //开启审核则为未审核状态
     if ($chk == 'true') {
         $user['state'] = '0';
     }
     //联盟商新增
     $uId = $mdlUser->insert($user);
     $web['u_id'] = $uId;
     //联盟商网站新增
     $webId = $this->app->model('userweb')->insert($web);
     //结束事务操作
     if ($uId && $webId && $pamId) {
         $_SESSION['account']['cpsuser'] = $uId;
         $this->bindUser($uId);
         $this->end(true, $this->app->_('注册成功'), $this->gen_url(array('app' => 'cps', 'ctl' => 'site_welcome', 'act' => 'showUser')), '', true);
     } else {
         $this->end(false, $this->app->_('注册失败'), $this->gen_url(array('app' => 'cps', 'ctl' => 'site_user', 'act' => 'register')), '', true);
     }
 }
Esempio n. 20
0
 public function create()
 {
     $data = utils::_filter_input(input::get());
     $vcode = $data['vcode'];
     $codyKey = $data['key'];
     $verifycode = $data['verifycode'];
     $userInfo = $data['pam_user'];
     try {
         $accountType = kernel::single('pam_tools')->checkLoginNameType($userInfo['account']);
         if ($accountType == "mobile") {
             $vcodeData = userVcode::verify($vcode, $userInfo['account'], 'signup');
             if (!$vcodeData) {
                 throw new \LogicException(app::get('topm')->_('手机验证码错误'));
             }
         } else {
             if (empty($verifycode) || !base_vcode::verify($codyKey, $verifycode)) {
                 throw new \LogicException(app::get('topm')->_('验证码填写错误'));
             }
         }
         //检测注册协议是否被阅读选中
         if (!input::get('license')) {
             throw new \LogicException(app::get('topm')->_('请阅读并接受会员注册协议'));
         }
         $userId = userAuth::signUp($userInfo['account'], $userInfo['password'], $userInfo['pwd_confirm']);
         userAuth::login($userId, $userInfo['account']);
     } catch (Exception $e) {
         $msg = $e->getMessage();
         return $this->splash('error', $url, $msg, true);
     }
     $url = $this->__getFromUrl();
     return $this->splash('success', $url, null, true);
 }
Esempio n. 21
0
 function create($next_url = null)
 {
     $mini = $_GET['mini'];
     $back_url = $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_passport', 'act' => 'signup'));
     if (!preg_match('/^([@\\.]|[^\\x00-\\x2f^\\x3a-\\x40]){2,20}$/i', $_POST['pam_account']['login_name'])) {
         if ($mini != 1) {
             $this->splash('failed', $back_url, __('用户名包含非法字符'));
         } else {
             echo json_encode(array('status' => 'failed', 'url' => 'back', 'msg' => '用户名包含非法字符'));
             return;
         }
     }
     $next_url = base64_decode($next_url);
     $member_model =& $this->app->model('members');
     $valideCode = app::get('b2c')->getConf('site.register_valide');
     if ($valideCode == 'true') {
         if (!base_vcode::verify('LOGINVCODE', intval($_POST['signupverifycode']))) {
             if ($mini != 1) {
                 $this->splash('failed', $back_url, __('验证码填写错误'));
             } else {
                 echo json_encode(array('status' => 'failed', 'url' => 'back', 'msg' => '验证码填写错误'));
                 return;
             }
         }
     }
     if ($_POST['license'] != 'agree') {
         if ($mini != 1) {
             $this->splash('failed', $back_url, __('同意注册条款后才能注册'));
         } else {
             echo json_encode(array('status' => 'failed', 'url' => 'back', 'msg' => '同意注册条款后才能注册'));
             return;
         }
     }
     $unamelen = strlen($_POST['pam_account']['login_name']);
     if ($unamelen < 3) {
         if ($mini != 1) {
             $this->splash('failed', $back_url, __('长度不能小于3'));
         } else {
             echo json_encode(array('status' => 'failed', 'url' => 'back', 'msg' => '长度不能小于3'));
             return;
         }
     }
     if ($member_model->is_exists($_POST['pam_account']['login_name'])) {
         if ($mini != 1) {
             $this->splash('failed', $back_url, __('该用户名已经存在'));
         } else {
             echo json_encode(array('status' => 'failed', 'url' => 'back', 'msg' => '该用户名已经存在'));
             return;
         }
     }
     if (!preg_match('/\\S+@\\S+/', $_POST['contact']['email'])) {
         if ($mini != 1) {
             $this->splash('failed', $back_url, __('邮件格式不正确'));
         } else {
             echo json_encode(array('status' => 'failed', 'url' => 'back', 'msg' => '邮件格式不正确'));
             return;
         }
     }
     $passwdlen = strlen($_POST['pam_account']['login_password']);
     if ($passwdlen < 4) {
         if ($mini != 1) {
             $this->splash('failed', $back_url, __('密码长度不能小于4'));
         } else {
             echo json_encode(array('status' => 'failed', 'url' => 'back', 'msg' => '密码长度不能小于4'));
             return;
         }
     }
     if ($passwdLen > 20) {
         if ($mini != 1) {
             $this->splash('failed', $back_url, __('密码长度不能大于20'));
         } else {
             echo json_encode(array('status' => 'failed', 'url' => 'back', 'msg' => '密码长度不能大于20'));
             return;
         }
     }
     if ($_POST['pam_account']['login_password'] != $_POST['pam_account']['psw_confirm']) {
         if ($mini != 1) {
             $this->splash('failed', $back_url, __('输入的密码不一致'));
         } else {
             echo json_encode(array('status' => 'failed', 'url' => 'back', 'msg' => '输入的密码不一致'));
             return;
         }
     }
     $lv_model =& $this->app->model('member_lv');
     $_POST['member_lv']['member_group_id'] = $lv_model->get_default_lv();
     $arrDefCurrency = app::get('ectools')->model('currency')->getDefault();
     $_POST['currency'] = $arrDefCurrency['cur_code'];
     $_POST['pam_account']['login_password'] = md5(trim($_POST['pam_account']['login_password']));
     $_POST['pam_account']['login_name'] = strtolower($_POST['pam_account']['login_name']);
     $_POST['pam_account']['account_type'] = pam_account::get_account_type($this->app->app_id);
     $_POST['pam_account']['createtime'] = time();
     $_POST['reg_ip'] = base_request::get_remote_addr();
     $_POST['regtime'] = time();
     $_POST['contact']['email'] = htmlspecialchars($_POST['contact']['email']);
     if ($member_model->save($_POST)) {
         $member_id = $_POST['member_id'];
         $_SESSION['account'][pam_account::get_account_type($this->app->app_id)] = $member_id;
         $this->bind_member($member_id);
         foreach (kernel::servicelist('b2c_save_post_om') as $object) {
             $object->set_arr($member_id, 'member');
             $refer_url = $object->get_arr($member_id, 'member');
         }
         if ($next_url) {
             header("Location: " . $next_url);
         } else {
             $data['member_id'] = $member_id;
             $data['uname'] = $_POST['pam_account']['login_name'];
             $data['passwd'] = $_POST['pam_account']['psw_confirm'];
             $data['email'] = $_POST['contact']['email'];
             $data['refer_url'] = $refer_url ? $refer_url : '';
             $data['is_frontend'] = true;
             $obj_account =& $this->app->model('member_account');
             $obj_account->fireEvent('register', $data, $member_id);
             if ($mini != 1) {
                 $this->splash('success', $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_member', 'act' => 'attr_page')), __('注册成功'));
             } else {
                 echo json_encode(array('status' => 'plugin_passport', 'url' => $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_member', 'act' => 'attr_page'))));
                 return;
             }
         }
         #$this->splash(null,$this->gen_url(array('app'=>'b2c','ctl'=>'site_member','act'=>'attr_page')),__('注册成功'));
     }
     $this->splash('failed', $back_url, __('注册失败'));
 }
Esempio n. 22
0
 public function checkVcode()
 {
     $postData = utils::_filter_input(input::get());
     if (empty($postData['verifycode']) || !base_vcode::verify('topc_unverify', $postData['verifycode'])) {
         $msg = app::get('topc')->_('验证码填写错误');
         return $this->splash('error', null, $msg, true);
     }
     $verifyType = $postData['verifyType'];
     $url = url::action("topc_ctl_member@unVerifyTwo", array('verifyType' => $verifyType, 'op' => $postData['type']));
     return $this->splash('success', $url, null);
 }
Esempio n. 23
0
 function toComment($goodsid, $item)
 {
     $member_data = $this->get_current_member();
     $url = $this->gen_url(array('app' => 'b2c', 'ctl' => 'site_product', 'act' => 'index', 'arg' => $goodsid));
     // $this->begin($url);
     $objComment = $this->app->model('member_comments');
     if ($this->app->getConf('comment.verifyCode.' . $item) == "on") {
         if ($item == "ask") {
             if (!base_vcode::verify('ASKVCODE', intval($_POST['askverifyCode']))) {
                 $this->splash('failed', $url, __('验证码填写错误'));
             }
         }
         if ($item == "discuss") {
             if (!base_vcode::verify('DISSVCODE', intval($_POST['discussverifyCode']))) {
                 $this->splash('failed', $url, __('验证码填写错误'));
             }
         }
         /*
                     if (md5($_POST[$item.'verifyCode'])<>$_COOKIE[strtoupper($item)."_RANDOM_CODE"]){
                         if ($item=="ask")
                             $stp=__("咨询");
                         elseif($item=="discuss")
                             $stp=__("评论");
                         #$this->splash('failed','back',$stp.__('验证码录入错误,请重新输入'));
                         echo "验证码有错误";
                     }*/
     }
     $objComment = kernel::single('b2c_message_disask');
     if (!$objComment->toValidate($item, $goodsid, $member_data, $message)) {
         $this->splash('failed', 'back', $message);
         //$this->end(true,__('您已经退出系统'),$url);
     } else {
         $aData['title'] = $_POST['title'];
         $aData['comment'] = $_POST['comment'];
         $aData['goods_id'] = $goodsid;
         $aData['object_type'] = $item;
         $aData['author_id'] = $member_data['member_id'] ? $member_data['member_id'] : 0;
         $aData['author'] = $member_data['uname'] ? $member_data['uname'] : __('非会员顾客');
         $aData['contact'] = $_POST['contact'] == '' ? $member_data['email'] : $_POST['contact'];
         $aData['time'] = time();
         $aData['lastreply'] = 0;
         $aData['ip'] = $_SERVER["REMOTE_ADDR"];
         $aData['display'] = $this->app->getConf('comment.display.' . $item) == 'soon' ? 'true' : 'false';
         if ($this->app->getConf('comment.display.' . $item) == 'soon') {
             $msg = $this->app->getConf('comment.submit_display_notice.' . $item);
         } else {
             $msg = $this->app->getConf('comment.submit_hidden_notice.' . $item);
         }
         if ($objComment->send($aData, $item, $message)) {
             $this->splash('success', $url, __($msg));
         } else {
             $this->splash('failed', 'back', __('发表失败!'));
         }
     }
 }