以前做的一个PHP微信扫码关注登录实例,首页判断是否首次关注公众号,扫码关注公众号获取微信用户头像、openid和省市等信息。

第一步:获取关注二维码ticket,并且传参二维码qrcode表主键id

$sql = "INSERT INTO `qrcode` (`addtime`) VALUES ('" . time() . "')"; mysql_query($sql);
$scene_id = mysql_insert_id(); $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $appid . '&secret=' . $appsecret;
$access_token_array = json_decode(curlGet($url), true);
$access_token = $access_token_array['access_token'];
$qrcode_url = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=' . $access_token; $post_data = array();
$post_data['expire_seconds'] = 3600 * 24; //有效时间
$post_data['action_name'] = 'QR_SCENE';
$post_data['action_info']['scene']['scene_id'] = $scene_id; //传参用户uid,微信端可获取
$json = curlPost($qrcode_url, json_encode($post_data));
if (!$json['errcode']) { $ticket = $json['ticket']; $ticket_img = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=' . urlencode($ticket);
} else { echo '发生错误:错误代码 ' . $json['errcode'] . ',微信返回错误信息:' . $json['errmsg']; exit;
}

第二步:微信服务端接受数据,并且用户登录信息

$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$scene_id = str_replace("qrscene_", "", $postObj->EventKey); $openid = $postObj->FromUserName; //openid
$ToUserName = $postObj->ToUserName;  //转换角色
$Event = strtolower($postObj->Event);
if ($Event == 'subscribe') {//首次关注 $is_first = 0;
} elseif ($Event == 'scan') {//已关注 $is_first = 1;
}
$access_token = $this->getAccessToken(); $userinfo = $this->getUserinfo($openid, $access_token);
$sql = "UPDATE `qrcode` SET `openid` = '" . $openid . "',logintime='" . time() . "',is_first=" . $is_first . ",nickname='" . $userinfo['nickname'] . "'" . ",avatar='" . $userinfo['avatar'] . "',sex='" . $userinfo['sex'] . "',province='" . $userinfo['province'] . "',city='" . $userinfo['city'] . "',country='" . $userinfo['country'] . "' WHERE `id` =" . $scene_id . ""; mysql_query($sql);

第三步:每隔2秒检测是否关注微信公众号

<script> check_login(); function check_login() { $.post("check_login.php", {scene_id: <?php echo $scene_id; ?>}, function(data) { var attention = '首次关注'; if (data.is_first == 1) { attention = '已关注过'; } if (data.openid != null) { alert("扫码成功,openid为" + data.openid + "nickname:" + data.nickname); location.reload(); } else { setTimeout("check_login()", 2000); } }, "json"); }
</script>

通过微信openid和access_token获取微信用户信息,并存入表当中的信息如下:

<tr> <th>openid</th> <th>昵称</th> <th>性别</th> <th>国家</th> <th>省份</th> <th>城市</th> <th>头像</th> <th>是否关注过</th> <th>登录时间</th>
</tr>

本实例源码下载:https://www.sucaihuo.com/php/1414.html

PHP微信扫码关注登录实例相关推荐

  1. 微信扫码关注登录(vue+node+express+mongodb)

    微信扫码关注登录(vue+node+express+mongodb) 文章目录 前言 一.微信扫码关注登录是什么? 二.为什么要使用微信扫码关注登录? 三.思路 前端部分 后端部分: 四.微信后台 授 ...

  2. 「实用」微信扫码 - 关注公众号后网站自动登录

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:用好Java中的枚举,真的没有那么简单!个人原创+1博客:点击前往,查看更多 作者:destiny 链接:htt ...

  3. 微信扫码 - 关注公众号后网站自动注册并登录的实现

    微信扫码 - 关注公众号后网站自动注册并登录的实现 需求描述 在自己网站上点击微信登录,网站自己弹出一个二维码.扫描二维码后弹出公众号的关注界面.只要一关注公众号网站自动登录.第二次扫描登录的时候网站 ...

  4. 企业微信H5_身份验证,PC网站企业微信扫码授权登录

    企业微信H5_身份验证,PC网站企业微信扫码授权登录 文章目录 一.扫码登录配置 1. 企业微信扫码登录接入流程 2. 企业微信扫码登录接入流程拆解 3. 开启网页授权登录 二.实战演练 2.1. 用 ...

  5. 网站上做企业微信扫码授权登录怎么做?(超详细教程)

    企业微信已经搞了这一套完整的教程! https://developer.work.weixin.qq.com/tutorial/detail/56 第1步:企业微信自建应用 第2步:浏览企业微信开发文 ...

  6. PHP微信扫码关注公众号并授权登录源码

    PHP微信扫码登录看起来简单,但做起来有点麻烦,开发起来就会浪费很多的时间. PHP判断是否首次关注公众号,扫码关注公众号获取微信用户头像.openid和省市等信息源码. 演示体验地址: https: ...

  7. 网站通过手机微信扫码关注直接登录系统--java版

    一.场景 1.有自己的一个网站: 2.点击登录按钮后,弹出公司公众号二维码: 3.用户扫码后,若之前没有关注公众号,需要点击关注公众号,然后直接登录系统: 4.若用户扫码后,之前已经关注过公众号,则直 ...

  8. 最新PHP微信扫码关注公众号并授权登录源码

    正文: PHP微信扫码登录看起来简单,但做起来有点麻烦,开发起来就会浪费很多的时间. PHP判断是否首次关注公众号,扫码关注公众号获取微信用户头像.openid和省市等信息源码. 第一步:获取关注二维 ...

  9. 基于Spring Boot实现电脑端网页微信扫码授权登录方式一(附带完整源码)

    简介 电脑端微信网页扫码授权登录有2种方式: 第一种:基于微信公众号,单独获取登录二维码扫码,然后扫码登录,程序控制跳转逻辑,例如CSDN: 第二种:基于微信开放平台,跳转到微信二维码页面进行扫码登录 ...

最新文章

  1. 强势推荐10款windows端的实用软件,鲜为人知却非常强大!
  2. Ubuntu在终端执行命令时出现的错误
  3. flannel源码分析--LookupExtIface
  4. Spring中@Controller和@RestController之间的区别
  5. 去中心化钱包CoinU下载教程(如何下载C)
  6. matplotlib绘制混淆矩阵_混淆矩阵及其可视化
  7. mysql的jdbc版本_【jdbc】Mysql 8版本jdbc设置
  8. python替代php,Python架构的PHP替代方案
  9. python randint什么分布_python随机数分布random测试
  10. 【BZOJ3105】新Nim游戏,线性基+贪心
  11. C11中gets()的函数被删除
  12. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答...
  13. 天津铁路警方打击倒票专项行动破案19起 抓获19人
  14. C#通过XElement写入XML文件
  15. Maven-Eclipse使用maven创建HelloWorld Java项目
  16. linux下对SD卡分区
  17. vue2和vue3关闭语法检查
  18. 洛谷P1080 国王游戏(贪心)
  19. 2021-09-07体脂秤模块用来做什么?开发八电极体脂秤方案
  20. android 齿轮动画,Android(Animation): 一直转个不停的齿轮

热门文章

  1. 用CSS画小猪佩奇,你就是下一个社会人! js将“I am a coder”反转成 “coder a am I”,不许用split,join,subString,reverse;求解方法三...
  2. linux下中文输入法的安装(解决菜单栏输入法图标消失问题)
  3. linux图形界面没有输入法,fcitx 输入法看不到选词,上面键盘也不见了!
  4. 删除计算机自带的游戏软件,win10系统删除自带游戏的处理办法
  5. 学习ESP8266_15_Flash
  6. 【热搜】想卷深度学习必会的10题【最全AI面经】
  7. 2021.02.17 GDKOI2021 好题记 第一记
  8. 重邮计算机专业取得奖项,重邮邹宇航:保研北大,囊括国内外40余个重量级奖项的科创达人...
  9. 关于保险的基础知识总结
  10. 外贸企业邮箱域名是什么?企业内部邮箱域名注册解析怎么做?