微信公众号/小程序授权验证

function icheckauth($force = true)
{
    global $_W, $_GPC;
    load()->model('mc');
    $_W['member'] = array();
    if (is_weixin() && !defined('IN_WXAPP')) {
        if (!empty($_W['openid'])) {
            if (empty($force)) {
                $member = get_member($_W['openid']);
            } else {
                $fansInfo = mc_oauth_userinfo();
                if (!empty($fansInfo['unionid'])) {
                    pdo_update('tiny_wmall_members', array('openid' => $fansInfo['openid']), array('unionId' => $fansInfo['unionid']));
                    pdo_update('tiny_wmall_members', array('unionId' => $fansInfo['unionid']), array('openid' => $fansInfo['openid']));
                    member_union($fansInfo['unionid']);
                    $member = get_member($fansInfo['unionid'], 'unionId');
                } else {
                    $member = get_member($fansInfo['openid']);
                }
                $avatar = rtrim(rtrim($fansInfo['headimgurl'], '0'), 132) . 132;
                if (empty($member)) {
                    $mc = pdo_fetch('select a.fanid,b.credit1,b.credit2,b.uid,b.realname,b.mobile,b.gender from' . tablename('mc_mapping_fans') . ' as a left join ' . tablename('mc_members') . ' as b on a.uid = b.uid where a.uniacid = :uniacid and a.acid = :acid and a.openid = :openid', array(':uniacid' => $_W['uniacid'], ':acid' => $_W['acid'], ':openid' => $_W['openid']));
                    if (empty($mc['uid'])) {
                        $member = array(
                            'uniacid' => $_W['uniacid'],
                            'uid' => date('His') . random(3, true),
                            'openid' => $fansInfo['openid'],
                            'unionId' => $fansInfo['unionid'],
                            'nickname' => $fansInfo['nickname'],
                            'realname' => $fansInfo['nickname'],
                            'sex' => ($fansInfo['sex'] == 1 ? '男' : '女'),
                            'avatar' => $avatar,
                            'is_sys' => 2, //模拟用户
                            'status' => 1,
                            'token' => random(32),
                            'addtime' => TIMESTAMP,
                        );
                        pdo_insert('tiny_wmall_members', $member);
                        $member['credit1'] = 0;
                        $member['credit2'] = 0;
                    } else {
                        $member = array(
                            'uniacid' => $_W['uniacid'],
                            'uid' => $mc['uid'],
                            'openid' => $_W['openid'],
                            'unionId' => $fansInfo['unionid'],
                            'nickname' => $fansInfo['nickname'],
                            'realname' => $mc['realname'],
                            'mobile' => $mc['mobile'],
                            'sex' => ($fansInfo['sex'] == 1 ? '男' : '女'),
                            'avatar' => $avatar,
                            'is_sys' => 1,
                            'status' => 1,
                            'token' => random(32),
                            'addtime' => TIMESTAMP,
                        );
                        pdo_insert('tiny_wmall_members', $member);
                        $member['credit1'] = $mc['credit1'];
                        $member['credit2'] = $mc['credit2'];
                    }
                } else {
                    if (($member['nickname'] != $fansInfo['nickname']) || ($member['avatar'] != $avatar)) {
                        $update = array(
                            'nickname' => $fansInfo['nickname'],
                            'avatar' => $avatar
                        );
                        pdo_update('tiny_wmall_members', $update, array('id' => $member['id']));
                    }
                }
            }
            $_W['member'] = $member;
        }
    } elseif (defined('IN_WXAPP')) {
        $force = false;//小程序不强制授权
        if (!empty($_W['openid'])) {
            //这里统一用户
            if (!empty($_W['unionid'])) {
                member_union($_W['unionid']);
                $member = get_member($_W['unionid'], 'unionId');
            }
            if (empty($member)) {
                $member = get_member($_W['openid'], 'openid_wxapp');
            }
            if (!empty($member)) {
                $_W['member'] = $member;
                $update = array();
                if (empty($member['openid_wxapp'])) {
                    $update['openid_wxapp'] = $_W['openid'];
                }
                if (empty($member['unionId']) && !empty($_W['unionid'])) {
                    $update['unionId'] = $_W['unionid'];
                }
                if (!empty($update)) {
                    pdo_update('tiny_wmall_members', $update, array('id' => $_W['member']['id']));
                }
            }
        }
    } else {
        $key = "we7_wmall_member_session_{$_W['uniacid']}";
        if (isset($_GPC[$key])) {
            $session = json_decode(base64_decode($_GPC[$key]), true);
            if (is_array($session)) {
                $member = get_member($session['uid']);
                if (is_array($member) && ($session['hash'] == $member['password'])) {
                    $_W['member'] = $member;
                } else {
                    isetcookie($key, false, -100);
                }
            } else {
                isetcookie($key, false, -100);
            }
        }
    }
    if ($_W['member']['uid'] > 0) {
        $_W['openid'] = $_W['openid_wechat'] = $_W['member']['openid'];
        $_W['openid_wxapp'] = $_W['member']['openid_wxapp'];
        if (defined('IN_WXAPP')) {
            $_W['openid'] = $_W['member']['openid'] = $_W['openid_wxapp'];
        }
        member_group_update();
        $_W['member']['is_store_newmember'] = 1;
        $_W['member']['is_mall_newmember'] = 1;
        $config_newmember_condition = 0;
        if (!empty($_W['we7_wmall']['config']['activity'])) {
            $config_newmember_condition = $_W['we7_wmall']['config']['activity']['newmember']['newmember_condition'];
        }
        if ($_GPC['sid'] > 0) {
            if ($config_newmember_condition == 1) {
                $is_exist = pdo_fetch('select id from ' . tablename('tiny_wmall_order') . ' where uniacid = :uniacid and sid = :sid and uid = :uid and status != 6', array(':uniacid' => $_W['uniacid'], ':sid' => intval($_GPC['sid']), ':uid' => $_W['member']['uid']));
            } else {
                $is_exist = pdo_get('tiny_wmall_order', array('uniacid' => $_W['uniacid'], 'sid' => intval($_GPC['sid']), 'uid' => $_W['member']['uid']), array('id'));
            }
            if (!empty($is_exist)) {
                $_W['member']['is_store_newmember'] = 0;
                $_W['member']['is_mall_newmember'] = 0;
            }
        }
        if ($_W['member']['is_mall_newmember'] == 1) {
            if ($config_newmember_condition == 1) {
                $is_exist = pdo_fetch('select id from ' . tablename('tiny_wmall_order') . ' where uniacid = :uniacid and uid = :uid and status != 6', array(':uniacid' => $_W['uniacid'], ':uid' => $_W['member']['uid']));
            } else {
                $is_exist = pdo_get('tiny_wmall_order', array('uniacid' => $_W['uniacid'], 'uid' => $_W['member']['uid']), array('id'));
            }
            if (!empty($is_exist)) {
                $_W['member']['is_mall_newmember'] = 0;
            }
        }
        if (!$_W['member']['status'] && $force) {
            imessage('您暂时无权访问平台,', 'close', 'info');
        }
        return true;
    }
    if ($force) {
        $forward = base64_encode($_SERVER['QUERY_STRING']);
        if (defined('IN_WXAPP')) {
            imessage(error(41009, '请先登录'), '', 'ajax');
        } elseif (is_qianfan()) {
            if ($_W['ispost']) {
                imessage(error(-1, '请先登录'), imurl('wmall/auth/login', array('forward' => $forward)), 'ajax');
            }
            include itemplate('auth/qianfan');
            exit();
        } elseif (is_majia()) {
            if ($_W['ispost']) {
                imessage(error(-1, '请先登录'), imurl('wmall/auth/login', array('forward' => $forward)), 'ajax');
            }
            include itemplate('auth/majia');
            exit();
        } else {
            if ($_W['ispost']) {
                imessage(error(-1, '请先登录'), imurl('wmall/auth/login', array('forward' => $forward)), 'ajax');
            }
            header("location: " . imurl('wmall/auth/login', array('forward' => $forward)), true);
        }
        exit;
    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值