$_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID'])); } if (process::islock('login')) { //检查登录操作是否已经锁定 return self::outerr(errcode::ErrOperRepeat); } $type = intval(trim($_POST['type'])); if (!isset($type) || !in_array($type, $this->client_login_type_array)) { return self::outerr(errcode::ErrParamter, 'type error.'); } else { $_SESSION['login_type'] = $type; } $validate = new Validate(); if ($type == self::mobile_login) { $openid = trim($_POST['mobile']); $password = trim($_POST['passwd']); $validate->setValidate(Validate::verify_mobile($openid)); $validate->setValidate(Validate::verify_password($password)); } else { $openid = trim($_POST['openid']); $validate->setValidate(Validate::verify_openid($openid)); } $error = $validate->validate(); if ($error != '') { return self::outerr(errcode::ErrParamter, $error); } $model_member = Model('member'); $member_info = $this->getMemberInfoEx($model_member,$openid, $type, $password); if (is_array($member_info) and !empty($member_info)) { if (!$member_info['member_state']) { return self::outerr(errcode::ErrAccountStop); } } else { process::addprocess('login'); if($type == self::wxopen_login) { //如果是开放平台帐号,此处先需要注册 return self::outerr(errcode::ErrWxNotExist); } else { return self::outerr(errcode::ErrUserOrPass, "用户名或密码错误"); } } $model_member->createSession($member_info); process::clear('login'); //这两处代码应该从session merge 到数据库中. // cookie中的cart存入数据库 Model('cart')->mergecart($member_info, $_SESSION['store_id']); // cookie中的浏览记录存入数据库 Model('goods_browse')->mergebrowse($_SESSION['member_id'], $_SESSION['store_id']); $this->addMbUseToken($_SESSION['MPHPSESSID']); return self::outsuccess(array('member_id' => $_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID'])); } private function register_open($model_member,$type,$openid) { if($type == self::wxopen_login) { $id = $model_member->insert(array('member_wxopenid' => $openid)); if($id > 0) { return $this->getMemberInfoEx($model_member,$openid,$type); } else { return NULL; } } else { return NULL; } } private function getMemberInfoEx($model_member,$openid, $type, $passwd = '') { $conditions = array(); if ($type == self::mobile_login) { $conditions['member_mobile'] = $openid; $conditions['member_passwd'] = md5($passwd); } elseif ($type == self::wxopen_login) { $conditions['member_wxopenid'] = $openid; } else { return NULL; } $member_info = $model_member->getMemberInfo($conditions,self::$fields); field_helper::validate_null_string($member_info,'member_mobile,member_wxopenid,member_name,' . 'member_truename,member_signname,member_avatar,member_email,member_birthday'); field_helper::validate_null_string($member_info,'member_sex','0'); field_helper::validate_null_string($member_info,'member_nickname',substr_replace($openid, '****', 3, 4)); return $member_info; } private function addMbUseToken($token) { $model_mb_user_token = Model('mb_user_token'); $mb_user_token_info['member_id'] = $_SESSION['member_id']; $mb_user_token_info['member_name'] = $_SESSION['member_name']; $mb_user_token_info['token'] = $token; $mb_user_token_info['login_time'] = time(); $mb_user_token_info['client_type'] = $_SESSION['client_type']; $model_mb_user_token->addMbUserToken($mb_user_token_info); } public function getcodeOp() { $mobile = trim($_POST['mobile']); $type = trim($_POST['type']); $validator = new Validate(); $validator->setValidate(Validate::verify_mobile($mobile)); $err = $validator->validate(); if ($err != '') { return self::outerr(errcode::ErrParamter, $err); } $sms = new sms_helper(); $ret = $sms->send($mobile,$type); if($ret['code'] == 200) { return self::outsuccess(NULL); } else { return self::outerr($ret['code'],$ret['msg']); } } public function registerOp() { if($_SESSION['is_login'] == 1) { return self::outerr(errcode::ErrHasLogined, '登录后,不能注册新用户.'); } $mobile = trim($_POST['mobile']); $password = trim($_POST['passwd']); $code = trim($_POST['code']); $validator = new Validate(); $validator->setValidate(Validate::verify_mobile($mobile)); $validator->setValidate(Validate::verify_password($password)); $validator->setValidate(Validate::verify_smscode($code)); $err = $validator->validate(); if ($err != '') { return self::outerr(errcode::ErrParamter, $err); } $ret = sms_helper::check_code(Sms::register_code,$code,$mobile); if(is_array($ret)) { return self::outerr($ret['code'], $ret['msg']); } $model = Model('member'); $ret =$model->getMemberInfo(array('member_mobile' => $mobile)); if (!empty($ret)) { return self::outerr(errcode::ErrUserExisted, "用户已经存在."); } else { $member_info = array('member_mobile' => $mobile, 'member_type' => 0, 'member_passwd' => $password, 'member_sex' => 0, 'member_name' => $mobile, 'member_nickname' => substr_replace($mobile, '****', 3, 4), 'member_mobile_bind' => 1); $success = $model->addMember($member_info); if ($success == false) { return self::outerr(errcode::ErrRegister); } else { return self::outsuccess(NULL); } } } public function resetpassOp() { $mobile = trim($_POST['mobile']); $password = trim($_POST['passwd']); $code = trim($_POST['code']); $validator = new Validate(); $validator->setValidate(Validate::verify_mobile($mobile)); $validator->setValidate(Validate::verify_password($password)); $validator->setValidate(Validate::verify_smscode($code)); $err = $validator->validate(); if ($err != '') { return self::outerr(errcode::ErrParamter, $err); } $ret = sms_helper::check_code(Sms::resetpass_code,$code,$mobile); if(is_array($ret)) { return self::outerr($ret['code'], $ret['msg']); } $model = Model('member'); $ret = $model->editMember(array('member_mobile' => $mobile),array('member_passwd' => md5($password))); if($ret == false || $model->affected_rows() <= 0) { $ret = $model->getMemberInfo(array('member_mobile' => $mobile)); if (empty($ret)) { return self::outerr(errcode::ErrMemberNotExist, "该手机号未注册"); } } return self::outsuccess(NULL); } /** * 微信绑定 * * 输入参数: * wx_openid 微信id * user_info: 用户信息 * mobile: 手机号 * code: 验证码 */ public function bindOp() { $wx_openid = trim($_GET['wx_openid']); $mobile = trim($_GET['mobile']); $code = trim($_GET['code']); // 输入内容判断 $validator = new Validate(); $validator->setValidate(Validate::verify_mobile($mobile)); $validator->setValidate(Validate::verify_openid($wx_openid)); $validator->setValidate(Validate::verify_smscode($code)); $err = $validator->validate(); if ($err != '') { return self::outerr(errcode::ErrInputParam,$err); } // 校验验证码 $ret = sms_helper::check_code(Sms::register_code,$code,$mobile); if(is_array($ret)) { return self::outerr($ret['code'], $ret['msg']); } // 判断是否处理 $model = Model('member'); // 判断是否已经注册 $ret = $model->getMemberInfo(array('member_mobile' => $mobile)); if (empty($ret)) { return self::outerr(errcode::ErrMemberNotExist); } else { $member_id = $ret['member_id']; } $update_arr = array(); $info = user_helper::parase_wxinfo($_GET['user_info']); if($info == false) { $update_arr['member_wxopenid'] = $wx_openid; } else { $update_arr['member_wxopenid'] = $wx_openid; $update_arr = array_merge($update_arr,$info); } $ret = $model->editMember(array('member_id' => $member_id), $update_arr); if (!$ret) { return self::outerr(errcode::ErrDB); } else { return self::outsuccess(null); } } }