login.php 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688
  1. <?php
  2. /**
  3. * 用户身份认证相关操作
  4. */
  5. defined('InShopNC') or exit('Access Invalid!');
  6. require_once(BASE_DATA_PATH . '/model/member.model.php');
  7. require_once(BASE_CORE_PATH . '/framework/libraries/sms.php');
  8. require_once(BASE_CORE_PATH . '/framework/function/core.php');
  9. require_once(BASE_ROOT_PATH . '/helper/sms_helper.php');
  10. require_once(BASE_ROOT_PATH . '/helper/field_helper.php');
  11. require_once(BASE_ROOT_PATH . '/helper/session_helper.php');
  12. require_once(BASE_ROOT_PATH . '/helper/relation_helper.php');
  13. require_once(BASE_ROOT_PATH . '/helper/account_helper.php');
  14. require_once(BASE_ROOT_PATH . '/helper/session.php');
  15. require_once(BASE_ROOT_PATH . '/helper/login_helper.php');
  16. //登录,获取验证码,注册
  17. class loginControl extends mobileHomeControl
  18. {
  19. const mobile_login = 1;
  20. const wxopen_login = 2;
  21. const wxunion_login = 3;
  22. //客户登录身份类型
  23. protected $client_login_type_array = array(0, 1, 2);
  24. private static $fields = 'member_id,member_mobile,member_wxunionid,member_wxopenid,member_name,member_truename,member_signname,' .
  25. 'member_nickname,member_avatar,member_sex,member_birthday,member_passwd,member_paypwd,member_email,member_mobile_bind,member_state';
  26. public function __construct() {
  27. parent::__construct();
  28. }
  29. public function statusOp()
  30. {
  31. if (session_helper::logined()) {
  32. session::instance()->set_cookie(session_helper::session_id());
  33. account_helper::onStatus(session_helper::memberid());
  34. return self::outsuccess($this->ret_value());
  35. }
  36. else {
  37. $fcode = new user_session\fcode();
  38. $fcode->onStatus();
  39. return self::outsuccess($this->ret_value());
  40. }
  41. }
  42. private function ret_value()
  43. {
  44. $has_mobile = empty($_SESSION['member_mobile']) ? false : true;
  45. if(!$has_mobile) {
  46. $has_mobile = session_helper::has_regmobile();
  47. }
  48. $has_author = empty($_SESSION['member_wxunionid']) ? false : true;
  49. if(!$has_author) {
  50. $has_author = wechat_helper::has_userinfo();
  51. }
  52. $ret = ['ismember' => $has_mobile, 'isauthor' => $has_author, //for前向兼容
  53. 'hasmobile' => $has_mobile, 'hasauthor'=> $has_author,
  54. 'member_id' => session_helper::memberid(),
  55. 'HPHPSESSID' => session_helper::session_id(),
  56. 'userinfo' => $this->userinfo()];
  57. return $ret;
  58. }
  59. private function userinfo()
  60. {
  61. $result = [];
  62. $result['member_avatar'] = session_helper::avatar();
  63. $result['member_mobile'] = session_helper::mobile();
  64. $result['member_nickname'] = session_helper::nickname();
  65. $result['member_sex'] = session_helper::sex();
  66. $result['qrcode'] = session_helper::qrcode();
  67. return $result;
  68. }
  69. public function wxauthorOp()
  70. {
  71. if(session_helper::logined()) {
  72. return self::outsuccess($this->ret_value());
  73. }
  74. $user_info = $_GET['user_info'];
  75. if(empty($user_info)) {
  76. return self::outerr(errcode::ErrParamter, "上传的用户信息为空.");
  77. }
  78. $user_info = json_decode($user_info,true);
  79. if(empty($user_info)) {
  80. return self::outerr(errcode::ErrParamter, "上传的用户信息为空.");
  81. }
  82. //cur-> wx
  83. $unionid_loginner = new login\open_userinfo_log($user_info);
  84. if($unionid_loginner->ismember())
  85. {
  86. if($unionid_loginner->binded_mobile())
  87. {
  88. //pre-> mobile
  89. if(session_helper::has_regmobile())
  90. {
  91. $mobile = session_helper::get_regmobile();
  92. $mobile_loginner = new login\mobile_log($mobile);
  93. if($mobile_loginner->ismember()) {
  94. $unionid_loginner->unbind_wechat();
  95. $mobile_loginner->bind($user_info,$mobile);
  96. $mobile_loginner->login();
  97. }
  98. else {
  99. $unionid_loginner->bind($user_info,$mobile); //前向兼容很久前用openid登录情况。
  100. $unionid_loginner->login();
  101. }
  102. }
  103. else
  104. {
  105. $unionid_loginner->bind($user_info);
  106. $unionid_loginner->login();
  107. }
  108. account_helper::onLogin(session_helper::memberid());
  109. }
  110. else
  111. {
  112. //pre-> mobile
  113. if(session_helper::has_regmobile())
  114. {
  115. $mobile = session_helper::get_regmobile();
  116. $mobile_loginner = new login\mobile_log($mobile);
  117. if($mobile_loginner->ismember()) {
  118. $unionid_loginner->unbind_wechat();
  119. $mobile_loginner->bind($user_info,$mobile);
  120. $mobile_loginner->login();
  121. }
  122. else {
  123. $unionid_loginner->bind($user_info,$mobile); //前向兼容很久前用openid登录情况。
  124. $unionid_loginner->login();
  125. }
  126. account_helper::onLogin(session_helper::memberid());
  127. session_helper::clear_regmobile();
  128. wechat_helper::clear_wxinfo();
  129. }
  130. else {
  131. wechat_helper::set_userinfo($user_info);
  132. }
  133. }
  134. }
  135. else
  136. {
  137. if(session_helper::has_regmobile())
  138. {
  139. $mobile = session_helper::get_regmobile();
  140. $mobile_loginner = new login\mobile_log($mobile);
  141. if($mobile_loginner->ismember()) {
  142. $mobile_loginner->bind($user_info);
  143. $mobile_loginner->login();
  144. }
  145. else {
  146. $unionid_loginner->register($user_info,session_helper::relay_id(),$mobile);
  147. $unionid_loginner->login();
  148. account_helper::onRegister(session_helper::memberid(),session_helper::relay_id());
  149. session_helper::clear_regmobile();
  150. wechat_helper::clear_wxinfo();
  151. }
  152. account_helper::onLogin(session_helper::memberid());
  153. }
  154. else {
  155. wechat_helper::set_userinfo($user_info);
  156. }
  157. }
  158. return self::outsuccess($this->ret_value());
  159. }
  160. public function ministartOp()
  161. {
  162. $code = $_GET['code'];
  163. if (empty($code)) return self::outerr(errcode::ErrParamter);
  164. $appid = \MiniPay\WxPayConfig::APPID;
  165. $app_secret = \MiniPay\WxPayConfig::APPSECRET;
  166. $url = "https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$app_secret}&js_code={$code}&grant_type=authorization_code";
  167. $resp = http_request($url);
  168. if ($resp == false) {
  169. return self::outerr(errcode::ErrLogin);
  170. }
  171. else
  172. {
  173. $body = json_decode($resp,true);
  174. if (isset($body['errcode'])) {
  175. return self::outerr(errcode::ErrApptype,"获取appid失败");
  176. }
  177. else {
  178. return self::outsuccess($body);
  179. }
  180. }
  181. }
  182. private function is_special($mobile,$code)
  183. {
  184. if($mobile == '13700000000' && $code == '1111') {
  185. return true;
  186. }
  187. else if($mobile == '13800000000' && $code == '1111') {
  188. return true;
  189. }
  190. else if($mobile == '13900000000' && $code == '1111') {
  191. return true;
  192. }
  193. else {
  194. return false;
  195. }
  196. }
  197. public function bind_mobilexOp()
  198. {
  199. if(session_helper::logined()) {
  200. return self::outsuccess($this->ret_value());
  201. }
  202. $mobile = trim($_GET['mobile']);
  203. $code = trim($_GET['code']);
  204. //一些平台测试账户,特殊处理
  205. if($this->is_special($mobile,$code))
  206. {
  207. if(login_helper::onBinded($mobile,0)) {
  208. return self::outsuccess($this->ret_value());
  209. }
  210. }
  211. // 输入内容判断
  212. $validator = new Validator();
  213. $validator->setValidate(Validator::verify_mobile($mobile));
  214. $validator->setValidate(Validator::verify_smscode($code));
  215. $err = $validator->validate();
  216. if ($err != '') {
  217. return self::outerr(errcode::ErrInputParam,$err);
  218. }
  219. // 校验验证码
  220. $ret = sms_helper::check_code(Sms::register_code,$code,$mobile);
  221. if(is_array($ret)) {
  222. return self::outerr($ret['code'], $ret['msg']);
  223. }
  224. //cur-> mobile
  225. $mobile_loginner = new login\mobile_log($mobile);
  226. if($mobile_loginner->ismember())
  227. {
  228. if($mobile_loginner->binded_wechat())
  229. {
  230. //pre->wx
  231. if(wechat_helper::has_userinfo())
  232. {
  233. $user_info = wechat_helper::userinfo();
  234. $union_logginer = new login\open_userinfo_log($user_info);
  235. if($union_logginer->ismember()) {
  236. $mobile_loginner->unbind_mobile();
  237. $union_logginer->bind([],$mobile);
  238. $union_logginer->login();
  239. }
  240. else{
  241. $mobile_loginner->bind(wechat_helper::userinfo());
  242. $mobile_loginner->login();
  243. }
  244. session_helper::clear_regmobile();
  245. wechat_helper::clear_wxinfo();
  246. }
  247. else {
  248. $mobile_loginner->login();
  249. }
  250. account_helper::onLogin(session_helper::memberid());
  251. }
  252. else
  253. {
  254. //pre->wx
  255. if(wechat_helper::has_userinfo())
  256. {
  257. $user_info = wechat_helper::userinfo();
  258. $union_logginer = new login\open_userinfo_log($user_info);
  259. if($union_logginer->ismember()) {
  260. $mobile_loginner->unbind_mobile();
  261. $union_logginer->bind([],$mobile);
  262. $union_logginer->login();
  263. }
  264. else {
  265. $mobile_loginner->bind(wechat_helper::userinfo());
  266. $mobile_loginner->login();
  267. }
  268. account_helper::onLogin(session_helper::memberid());
  269. session_helper::clear_regmobile();
  270. wechat_helper::clear_wxinfo();
  271. }
  272. else {
  273. session_helper::set_regmobile($mobile);
  274. }
  275. }
  276. }
  277. else
  278. {
  279. //pre->wx
  280. if(wechat_helper::has_userinfo())
  281. {
  282. $user_info = wechat_helper::userinfo();
  283. $union_logginer = new login\open_userinfo_log($user_info);
  284. if($union_logginer->ismember()) {
  285. $union_logginer->bind([],$mobile);
  286. $union_logginer->login();
  287. }
  288. else {
  289. $mobile_loginner->register($user_info,session_helper::relay_id(),$mobile);
  290. $mobile_loginner->login();
  291. account_helper::onRegister($mobile_loginner->memberid(),session_helper::relay_id());
  292. }
  293. account_helper::onLogin(session_helper::memberid());
  294. session_helper::clear_regmobile();
  295. wechat_helper::clear_wxinfo();
  296. }
  297. else {
  298. session_helper::set_regmobile($mobile);
  299. }
  300. }
  301. return self::outsuccess($this->ret_value());
  302. }
  303. public function bind_mobileOp()
  304. {
  305. $mobile = trim($_GET['mobile']);
  306. $code = trim($_GET['code']);
  307. if($this->is_special($mobile,$code))
  308. {
  309. if(login_helper::onBinded($mobile,0)) {
  310. return self::outsuccess($this->ret_value());
  311. }
  312. }
  313. // 输入内容判断
  314. $validator = new Validator();
  315. $validator->setValidate(Validator::verify_mobile($mobile));
  316. $validator->setValidate(Validator::verify_smscode($code));
  317. $err = $validator->validate();
  318. if ($err != '') {
  319. return self::outerr(errcode::ErrInputParam,$err);
  320. }
  321. // 校验验证码
  322. $ret = sms_helper::check_code(Sms::register_code,$code,$mobile);
  323. if(is_array($ret)) {
  324. return self::outerr($ret['code'], $ret['msg']);
  325. }
  326. if(login_helper::onBinded($mobile,session_helper::relay_id())) {
  327. return self::outsuccess($this->ret_value());
  328. } else {
  329. return self::outerr(errcode::ErrDB,"对不起,系统出现错误:(");
  330. }
  331. }
  332. public function getcodexOp()
  333. {
  334. if(empty(session_helper::session_id())) {
  335. return self::outerr(errcode::ErrParamter);
  336. }
  337. if(session_helper::isapp() == false && util::from_wechat() == false) {
  338. return self::outerr(errcode::ErrParamter);
  339. }
  340. $mobile = trim($_POST['mobile']);
  341. $type = trim($_POST['type']);
  342. $validator = new Validator();
  343. $validator->setValidate(Validator::verify_mobile($mobile));
  344. $err = $validator->validate();
  345. if ($err != '') {
  346. return self::outerr(errcode::ErrParamter, $err);
  347. }
  348. $sms = new sms_helper();
  349. $ret = $sms->send($mobile,$type);
  350. if($ret['code'] == 200)
  351. {
  352. $items = Model('member')->getMemberInfo(array('member_mobile' => $mobile));
  353. if(empty($items)) {
  354. $isMember = false;
  355. } else {
  356. $isMember = true;
  357. }
  358. return self::outsuccess(['is_member' => $isMember]);
  359. }
  360. else {
  361. return self::outerr($ret['code'],$ret['msg']);
  362. }
  363. }
  364. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  365. public function loginOp()
  366. {
  367. if ($_SESSION['is_login'] == '1') { //检查是否已经登录
  368. return self::outsuccess(array('member_id' => $_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID']));
  369. }
  370. $type = intval(trim($_POST['type']));
  371. if (!isset($type) || !in_array($type, $this->client_login_type_array)) {
  372. return self::outerr(errcode::ErrParamter, 'type error.');
  373. } else {
  374. $_SESSION['login_type'] = $type;
  375. }
  376. $validate = new Validator();
  377. if ($type == self::mobile_login) {
  378. $openid = trim($_POST['mobile']);
  379. $password = trim($_POST['passwd']);
  380. $validate->setValidate(Validator::verify_mobile($openid));
  381. $validate->setValidate(Validator::verify_password($password));
  382. } else {
  383. $openid = trim($_POST['openid']);
  384. $validate->setValidate(Validator::verify_openid($openid));
  385. }
  386. $error = $validate->validate();
  387. if ($error != '') {
  388. return self::outerr(errcode::ErrParamter, $error);
  389. }
  390. $model_member = Model('member');
  391. $member_info = $this->getMemberInfoEx($model_member,$openid, $type, $password);
  392. if (is_array($member_info) and !empty($member_info))
  393. {
  394. if (!$member_info['member_state']) {
  395. return self::outerr(errcode::ErrAccountStop);
  396. }
  397. }
  398. else
  399. {
  400. if($type == self::wxopen_login) { //如果是开放平台帐号,此处先需要注册
  401. return self::outerr(errcode::ErrWxNotExist);
  402. } else {
  403. return self::outerr(errcode::ErrUserOrPass, "该手机号码未注册或者密码错误");
  404. }
  405. }
  406. $model_member->createSession($member_info);
  407. Model('cart')->mergecart($member_info, $_SESSION['store_id']);
  408. Model('goods_browse')->mergebrowse($_SESSION['member_id'], $_SESSION['store_id']);
  409. account_helper::onLogin($_SESSION['member_id']);
  410. session::instance()->set_cookie($_SESSION['MPHPSESSID']);
  411. return self::outsuccess(array('member_id' => $_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID']));
  412. }
  413. private function getMemberInfoEx($model_member,$openid, $type, $passwd = '')
  414. {
  415. $conditions = array();
  416. if ($type == self::mobile_login) {
  417. $conditions['member_mobile'] = $openid;
  418. $conditions['member_passwd'] = md5($passwd);
  419. } elseif ($type == self::wxopen_login) {
  420. $conditions['member_wxopenid'] = $openid;
  421. } else {
  422. return NULL;
  423. }
  424. $ret = $model_member->getMemberInfo($conditions,self::$fields);
  425. $member_info = session_helper::filter_member_info($ret,$openid);
  426. return $member_info;
  427. }
  428. public function getcodeOp()
  429. {
  430. if(empty(session_helper::session_id())) {
  431. return self::outerr(errcode::ErrParamter);
  432. }
  433. if(session_helper::isapp() == false && util::from_wechat() == false) {
  434. return self::outerr(errcode::ErrParamter);
  435. }
  436. $mobile = trim($_POST['mobile']);
  437. $type = trim($_POST['type']);
  438. $validator = new Validator();
  439. $validator->setValidate(Validator::verify_mobile($mobile));
  440. $err = $validator->validate();
  441. if ($err != '') {
  442. return self::outerr(errcode::ErrParamter, $err);
  443. }
  444. $sms = new sms_helper();
  445. $ret = $sms->send($mobile,$type);
  446. if($ret['code'] == 200) {
  447. return self::outsuccess(NULL);
  448. } else {
  449. return self::outerr($ret['code'],$ret['msg']);
  450. }
  451. }
  452. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  453. public function registerOp()
  454. {
  455. if($_SESSION['is_login'] == 1) {
  456. return self::outerr(errcode::ErrHasLogined, '登录后,不能注册新用户.');
  457. }
  458. $mobile = trim($_POST['mobile']);
  459. $password = trim($_POST['passwd']);
  460. $code = trim($_POST['code']);
  461. $validator = new Validator();
  462. $validator->setValidate(Validator::verify_mobile($mobile));
  463. $validator->setValidate(Validator::verify_password($password));
  464. $validator->setValidate(Validator::verify_smscode($code));
  465. $err = $validator->validate();
  466. if ($err != '') {
  467. return self::outerr(errcode::ErrParamter, $err);
  468. }
  469. $ret = sms_helper::check_code(Sms::register_code,$code,$mobile);
  470. if(is_array($ret)) {
  471. return self::outerr($ret['code'], $ret['msg']);
  472. }
  473. $model = Model('member');
  474. $ret =$model->getMemberInfo(array('member_mobile' => $mobile));
  475. if (!empty($ret)) {
  476. return self::outerr(errcode::ErrUserExisted, "用户已经存在.");
  477. }
  478. else
  479. {
  480. $member_info = array('member_mobile' => $mobile,
  481. 'member_type' => self::mobile_login,
  482. 'member_passwd' => $password,
  483. 'member_sex' => 0,
  484. 'member_name' => $mobile,
  485. 'member_nickname' => substr_replace($mobile, '****', 3, 4),
  486. 'member_mobile_bind' => 1);
  487. $insert_id = $model->addMember($member_info);
  488. if ($insert_id == false) {
  489. return self::outerr(errcode::ErrRegister);
  490. }
  491. else
  492. {
  493. $member_info =$model->getMemberInfoByID($insert_id);
  494. $model->createSession($member_info);
  495. Model('cart')->mergecart($member_info, $_SESSION['store_id']);
  496. Model('goods_browse')->mergebrowse($_SESSION['member_id'], $_SESSION['store_id']);
  497. account_helper::onRegister($_SESSION['member_id'],session_helper::relay_id());
  498. session::instance()->set_cookie($_SESSION['MPHPSESSID']);
  499. return self::outsuccess(array('member_id' => $_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID']));
  500. }
  501. }
  502. }
  503. public function resetpassOp()
  504. {
  505. $mobile = trim($_POST['mobile']);
  506. $password = trim($_POST['passwd']);
  507. $code = trim($_POST['code']);
  508. $validator = new Validator();
  509. $validator->setValidate(Validator::verify_mobile($mobile));
  510. $validator->setValidate(Validator::verify_password($password));
  511. $validator->setValidate(Validator::verify_smscode($code));
  512. $err = $validator->validate();
  513. if ($err != '') {
  514. return self::outerr(errcode::ErrParamter, $err);
  515. }
  516. $ret = sms_helper::check_code(Sms::resetpass_code,$code,$mobile);
  517. if(is_array($ret)) {
  518. return self::outerr($ret['code'], $ret['msg']);
  519. }
  520. $model = Model('member');
  521. $ret = $model->editMember(array('member_mobile' => $mobile),array('member_passwd' => md5($password)));
  522. if($ret == false || $model->affected_rows() <= 0)
  523. {
  524. $ret = $model->getMemberInfo(array('member_mobile' => $mobile));
  525. if (empty($ret)) {
  526. return self::outerr(errcode::ErrMemberNotExist, "该手机号未注册");
  527. }
  528. }
  529. return self::outsuccess(NULL);
  530. }
  531. /**
  532. * 微信注册登录
  533. * wx_openid 微信id
  534. * user_info: 用户信息
  535. * mobile: 手机号
  536. * code: 验证码
  537. */
  538. public function bindOp()
  539. {
  540. $wx_openid = trim($_GET['wx_openid']);
  541. $mobile = trim($_GET['mobile']);
  542. $code = trim($_GET['code']);
  543. // 输入内容判断
  544. $validator = new Validator();
  545. $validator->setValidate(Validator::verify_mobile($mobile));
  546. $validator->setValidate(Validator::verify_openid($wx_openid));
  547. $validator->setValidate(Validator::verify_smscode($code));
  548. $err = $validator->validate();
  549. if ($err != '') {
  550. return self::outerr(errcode::ErrInputParam,$err);
  551. }
  552. // 校验验证码
  553. $ret = sms_helper::check_code(Sms::register_code,$code,$mobile);
  554. if(is_array($ret)) {
  555. return self::outerr($ret['code'], $ret['msg']);
  556. }
  557. // 判断是否处理
  558. $model = Model('member');
  559. $ret = $model->getMemberInfo(array('member_mobile' => $mobile));
  560. if (empty($ret))
  561. {
  562. $passwd = $_POST['passwd'];
  563. $validator = new Validator();
  564. $validator->setValidate(Validator::verify_password($passwd));
  565. $err = $validator->validate();
  566. if ($err != '') {
  567. return self::outerr(errcode::ErrInputParam,$err);
  568. }
  569. $member_info = array('member_mobile' => $mobile,
  570. 'member_type' => self::mobile_login,
  571. 'member_passwd' => $passwd,
  572. 'member_sex' => 0,
  573. 'member_name' => $mobile,
  574. 'member_nickname' => substr_replace($mobile, '****', 3, 4),
  575. 'member_mobile_bind' => 1);
  576. $member_id = $model->addMember($member_info);
  577. if(!isset($member_id) || $member_id == false) {
  578. return self::outerr(errcode::ErrMemberNotExist);
  579. } else {
  580. account_helper::onRegister($member_id,session_helper::relay_id());
  581. }
  582. }
  583. else {
  584. $member_id = $ret['member_id'];
  585. }
  586. $update_arr = array();
  587. $info = session_helper::parase_wxinfo($_GET['user_info']);
  588. if($info == false) {
  589. $update_arr['member_wxopenid'] = $wx_openid;
  590. } else {
  591. $update_arr['member_wxopenid'] = $wx_openid;
  592. $update_arr = array_merge($update_arr,$info);
  593. }
  594. $ret = $model->editMember(array('member_id' => $member_id), $update_arr);
  595. if (!$ret) {
  596. return self::outerr(errcode::ErrDB);
  597. } else {
  598. $info = $model->getMemberInfoByID($member_id);
  599. $model->createSession($info);
  600. Model('cart')->mergecart($info, $_SESSION['store_id']);
  601. Model('goods_browse')->mergebrowse($_SESSION['member_id'], $_SESSION['store_id']);
  602. session::instance()->set_cookie($_SESSION['MPHPSESSID']);
  603. return self::outsuccess(array('member_id' => $_SESSION['member_id'],'HPHPSESSID' => $_SESSION['MPHPSESSID']));
  604. }
  605. }
  606. }