关于PHP实现扫码登录

原创 2017年03月04日 11:15:20
  1. 首先,我来讲题下我做这个功能的原因。

    因为公司接了某企业的一个单子,微信开放平台本来是提供第三方登录的,但是他们并没有给我们的域名授权,然而,授权审核需要7天。于是,我决定采用微信端公众平台的授权获取用户信息后实现PC端登录。

  2. 登录的原理

    登录的原理无非就是session或者cookie,然而,博主这里用的是session,session是连接客户端和服务器的重要部分。但是,不同的客户端连接服务器会产生不同的session,那么实现微信登录后同步到浏览器的关键就是,同步这两个客户端的session。

  3. 关键:如何使两个客户端的session同步

    其实服务器在于客户端进行通信的时候产生的每一个session都是带有一个唯一的id的,至于这个id(ps:博主是php的),我们可以用session_id()得到。

既然既然我们可以得到session_id了,接下来就是实现session同步了。关键点还是这个函数,session_id(),           这个函数不仅可以或得到本次session的id,还能让当前的session成为一个已知的sessionid的session。这里有点           绕,大家要好好理解。

在我实验下来,大概是这么用的。例如,我在PC端获取到了PC端的sessionid,假设为1,我用微信鉴权的路            径生成一个二维码,其中,将这个PC端的sessionid作为参数,放入回调地址中。让微信在扫码鉴权后,回调到            我制定的控制器,去同步session内容。

这里模仿微信鉴权后获取到了用户的信息:

// 首先我判断这次回调是否带上了sessionid参数

if($sessionid = $_GET[‘sessionid’])

// 将sessionid存入session,避免get的过程中丢失

$_SESSION[‘session_id’] = $sessionid;

// 在获取用户微信信息后加入以下代码,如果鉴权获得微信信息,请自行百度

if($sessionid = $_SESSION[“session_id”]){
unset($_SESSION[“session_id”]);
$session = $_SESSION;

//  同步PC和微信端的session
session_id($sessionid);

// 将获取到的微信信息存入这个共同session中
$_SESSION = $session;

// 启用这个session,关键,一定要使用这步
session_start();

//  这一步本来是博主用来重置微信端的sessionid用的,但是博主发现使用了这个函数之后,之前的session就无效了。
//  session_regenerate_id();
}

4.到此,PC端和微信端的session就同步了,可以在用户打开扫码的同时开启一个ajax,定时访问某个接口,判断session值是否改变,如果改变就跳转到指定页面,这样就实现了微信扫码登录。

PS:刚想出这个方法,怕自己忘记就写了,不一定是最安全,最好的,希望大家有不会的可以借鉴一下我的思路。

版权声明:本文为博主原创文章,转载请注明出处。

php/socket.io实现扫码登录

扫码登录demo 前端h5+ios 后端php+nodeserver 使用长链接来完成扫码登录 附上核心代码demo...
  • zhangsheng_1992
  • zhangsheng_1992
  • 2016年05月07日 22:59
  • 10896

让APP实现扫码登录,干货来了

创建扫码库 id 扫码ID username 扫码人 token 扫码人token sid 扫码唯一标识  32位 isOk 是否已经扫码 网页上二维码显示内容 {"type":"log...
  • dong_18383219470
  • dong_18383219470
  • 2016年11月30日 22:32
  • 3461

微信扫码登录验证PHP代码(不用开放平台)

public function wxqrcheckAction(){ if(g('ajaxchk')!=''){ //前端页面显示二维码并AJAX定时检查已否已扫码验证 ...
  • bona020
  • bona020
  • 2017年05月04日 22:28
  • 918

实现网站应用钉钉扫码登录,及查询用户详细信息

第一步,看官方文档 网站应用钉钉扫码登录开发指南(钉钉官网) 如果你想要通过用户扫码获取到他的个人信息,那么你需要完成全部的交互,如果你只是想为你的网站做一个免登录处理,其实只要拿到用户的 第三...
  • u012888052
  • u012888052
  • 2017年08月04日 14:07
  • 1413

Android 实现扫码登录

如今通过扫描二维码然后跳转登录的情形已经很普遍了,这里就来模拟实现一个简单的跳转登录功能模拟登陆的思路:1.建立一张数据表,包含三个字段,分别为主键id,用户名username,随机数randnumb...
  • new_one_object
  • new_one_object
  • 2016年07月24日 16:06
  • 6669

钉钉开发系列(十一)钉钉网页扫码登录

在《钉钉开发系列(八)二维码扫描登录的实现》介绍了一种扫码登录的方式,该方式是自己产生二维码,二维码中的URL指到自身的服务器页面,在该页面中以JSSDK的方式来获取钉钉用户的信息。钉钉官方提供了另外...
  • xxdddail
  • xxdddail
  • 2016年11月04日 14:38
  • 6092

钉钉开发系列(八)二维码扫描登录的实现

钉钉PC版在登录的时候,需要使用手机版的来扫描,扫描之后会弹出一个确定的页面,确定之后PC端就会登录进去。基于此,我们也想实现相似的功能,为此我们需要先探讨其中的原理。 查看钉钉PC版的二维码会发现是...
  • xxdddail
  • xxdddail
  • 2016年07月22日 17:15
  • 6999

PHP实现微信开放平台扫码登录源码下载

PHP实现微信开放平台扫码登录源码下载 ,刚做的微信开发平台登陆,搞了好久 不多说,演示下载:http://www.erdangjiade.com/php/1034.html 1、首先到微信开...
  • u013032788
  • u013032788
  • 2017年01月10日 19:28
  • 844

PHP微信第三方扫码登录技术问题

PHP微信第三方扫码登录技术问题
  • qq_16453867
  • qq_16453867
  • 2016年03月03日 10:30
  • 2013

PHP微信开放平台扫码登录源码

  • 2017年09月04日 10:06
  • 21KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于PHP实现扫码登录
举报原因:
原因补充:

(最多只允许输入30个字)