errcode)) { echo '

error:

' . $user->errcode; echo '

msg :

' . $user->errmsg; exit(); } $userarr['openid'] = $user->openid; $userarr['access_token'] = $user->access_token; return $userarr; } function get_wxuser_more() { global $access_token; global $openid; $graph_url = 'https://api.weixin.qq.com/sns/userinfo?access_token=' . $access_token . '&openid=' . $openid . '&lang=zh_CN'; $str = get_url_contents($graph_url); $user = json_decode($str); if (isset($user->errcode)) { echo '

error:

' . $user->errcode; echo '

msg :

' . $user->errmsg; exit(); } $userarr['openid'] = $user->openid; $userarr['nickname'] = $user->nickname; $userarr['sex'] = $user->sex; $userarr['province'] = $user->province; $userarr['city'] = $user->city; $userarr['country'] = $user->country; $userarr['headimgurl'] = $user->headimgurl; $userarr['privilege'] = $user->privilege; $userarr['unionid'] = $user->unionid; return $userarr; } function reusername($userid) { global $db; global $db_mymps; $ifreuser = $db->getOne('SELECT COUNT(id) FROM `' . $db_mymps . 'member` WHERE userid = \'' . $userid . '\''); if (0 < $ifreuser) { return true; } else { return false; } } function matchname($chars, $encoding = 'utf8') { $chars = trim($chars); $pattern = $encoding == 'utf8' ? '/[\\x{4e00}-\\x{9fa5}a-zA-Z0-9]/u' : '/[\\x80-\\xFF]/'; preg_match_all($pattern, $chars, $result); $temp = join('', $result[0]); return $temp; } error_reporting(32767 ^ 8); @header('Content-Type: text/html; charset=utf-8'); if (function_exists('date_default_timezone_set')) { date_default_timezone_set('Hongkong'); } define('IN_MYMPS', true); define('WXLOGIN', 1); define('WXLOGINDIR', dirname(__FILE__)); @define('MYMPS_ROOT', ereg_replace('[/\\]{1,}', '/', substr(WXLOGINDIR, 0, -15))); define('MYMPS_DATA', MYMPS_ROOT . '/data'); define('MYMPS_INC', MYMPS_ROOT . 'include'); require_once MYMPS_DATA . '/config.php'; require_once MYMPS_DATA . '/config.db.php'; require_once MYMPS_INC . '/db.class.php'; require_once MYMPS_INC . '/common.fun.php'; require_once MYMPS_INC . '/openlogin.fun.php'; require_once MYMPS_INC . '/cache.fun.php'; require_once MYMPS_ROOT . '/member/include/common.func.php'; $timestamp = time(); if (!pcclient()) { $_GET['mod'] = 'm'; } else { $_GET['mod'] = 'pc'; } session_save_path(MYMPS_DATA . '/sessions'); $code = isset($_GET['code']) ? trim(htmlspecialchars($_GET['code'])) : ''; $actionkey = isset($_GET['actionkey']) ? trim(htmlspecialchars($_GET['actionkey'])) : ''; $data = read_static_cache('wxlogin'); $appid = $data['appid']; $appsecret = $data['appsecret']; $callback = $data['callback']; $scope = 'snsapi_userinfo'; $state = 'mymps'; $json_obj = get_wxuser(); $access_token = $json_obj['access_token']; $openid = $json_obj['openid']; $json_obj_more = get_wxuser_more(); $nickname = $json_obj_more['nickname']; $prelogo = $json_obj_more['headimgurl']; $logo = $prelogo; if ($openid) { $row = $db->getRow('SELECT userid,userpwd FROM `' . $db_mymps . 'member` WHERE `openid_wx` = \'' . $openid . '\''); } require_once MYMPS_INC . '/member.class.php'; if (is_array($row)) { $userid = $row['userid']; $userpwd = $row['userpwd']; $db->query('UPDATE `' . $db_mymps . 'member` SET logintime=\'' . $timestamp . '\' WHERE userid = \'' . $userid . '\' '); if (PASSPORT_TYPE == 'phpwind') { require MYMPS_ROOT . '/pw_client/uc_client.php'; $user_login = uc_user_login($userid, $userpwd, 0); $member_log->in($userid, $userpwd, 'off', 'noredirect'); echo $user_login['synlogin']; } else if (PASSPORT_TYPE == 'ucenter') { $member_log->in($userid, $userpwd, 'off', 'noredirect'); require MYMPS_ROOT . '/uc_client/client.php'; list($uid, $username, $password, $email) = uc_user_login($userid, $userpwd); echo uc_user_synlogin($uid); } else { $member_log->in($userid, $userpwd, 'off', 'noredirect'); } $db->query('INSERT INTO `' . $db_mymps . 'member_wx` (`actionkey`,`openid`,`userid`,`userpwd`)VALUES (\'' . $actionkey . '\',\'' . $openid . '\',\'' . $userid . '\',\'' . $userpwd . '\')'); if (!pcclient() && $view != 'pc') { $mayimobile = get_mobile_settings(); $returnurl = $mayimobile['mobiledomain'] . '/index.php?mod=member'; echo mymps_goto($returnurl); } else { echo mymps_goto($mymps_global['SiteUrl'] . '/member/index.php'); } } else { $nickname = $charset == 'gbk' ? iconv('UTF-8', 'GBK', matchname($nickname)) : matchname($nickname); $nickname = cutstr($nickname, 15); $userid = !reusername($nickname) ? $nickname : $nickname . random(6); $userid = !reusername($userid) ? $userid : $userid . random(6); $userpwd = md5(random()); if ($db->getOne('SELECT COUNT(id) FROM `' . $db_mymps . 'member` WHERE userid = \'' . $userid . '\'') < 1) { $email = random() . '@qq.com'; if (PASSPORT_TYPE == 'phpwind') { require MYMPS_ROOT . '/pw_client/uc_client.php'; $checkuser = uc_check_username($userid); if ($checkuser == -2) { write_msg('用户名重复,请换一个用户名注册'); } else if ($checkuser == -1) { write_msg('用户名不符合规范,请换一个用户名注册'); } else if ($checkuser == 1) { } else { write_msg('未知错误,请换一个用户名注册'); } if ($email) { $checkemail = uc_check_email($email); $checkemail == -3 && write_msg('Email格式不正确,请填写正确的Email'); $checkemail == -4 && write_msg('该Email地址已重复,请更换一个Email地址'); } uc_user_register($userid, md5($userpwd), $email); $user_login = uc_user_login($userid, $userpwd, 0); echo $user_login['synlogin']; } else if (PASSPORT_TYPE == 'ucenter') { require MYMPS_ROOT . '/uc_client/client.php'; if ($activation && ($activeuser = uc_get_user($activation))) { list($uid, $userid) = $activeuser; } else { $user = $db->getRow('SELECT id,userid FROM `' . $db_mymps . 'member` WHERE userid = \'' . $userid . '\''); if (uc_get_user($userid) && !$user['userid']) { write_msg('该用户无需注册,请重新登录', $mymps_global[SiteUrl] . '/' . $mymps_global['cfg_member_logfile']); } $uid = uc_user_register($userid, $userpwd, $email); if ($uid <= 0) { if ($uid == -1) { write_msg('用户名不合法'); } else if ($uid == -2) { write_msg('包含不允许注册的词语'); } else if ($uid == -3) { write_msg('用户名已经存在'); } else if ($uid == -4) { write_msg('Email 格式有误'); } else if ($uid == -5) { write_msg('Email 不允许注册'); } else if ($uid == -6) { write_msg('该 Email 已经被注册'); } else { write_msg('未定义'); } } else { $userid = trim($userid); $userpwd = trim($userpwd); $email = trim($email); } list($uid, $username, $password, $email) = uc_user_login($userid, $userpwd); echo uc_user_synlogin($uid); } } member_reg($userid, $userpwd, '', '', '', '', '', 1, $openid, $logo, $prelogo); } $member_log->in($userid, $userpwd, 'off', 'noredirect'); $db->query('INSERT INTO `' . $db_mymps . 'member_wx` (`actionkey`,`openid`,`userid`,`userpwd`)VALUES (\'' . $actionkey . '\',\'' . $openid . '\',\'' . $userid . '\',\'' . $userpwd . '\')'); if (!pcclient() && $view != 'pc') { $mayimobile = get_mobile_settings(); $returnurl = $mayimobile['mobiledomain'] . '/index.php?mod=member'; echo mymps_goto($returnurl); } else { echo mymps_goto($mymps_global['SiteUrl'] . '/member/index.php'); } } ?>