h5扫描pc端二维码登录

news/2024/11/29 8:45:47/

我们采用前后端分离的方法来实现这个功能(暂不考虑二维码过期、该二维码登录过一次等复杂情况,只实现扫码登录功能)。

       首先梳理一下要准备的PHP接口,一共有3个:
          让前端页获取唯一的QRUUID(唯一字符串就可以)生成一个二维码用的接口。
         APP端扫描到QRUUID后去请求的接口,功能是把用户和这个QRUUID绑定(可以传User_id或者token什么的,具体看需求)。
         前端在获取到第一个的接口返回的QRUUID后去轮询请求的接口,功能是查询这个QRUUID是不是被APP端扫描并绑定。

      然后是HTML页的主要实现:
          其实就是Ajax请求PHP接口获得QRUUID然后生成二维码,接着使用setInterval() 方法去请求第三个PHP接口。(前端生成二维码的开放API:http://www.topscan.com/pingtai/)
      简易数据库表:

DROP TABLE IF EXISTS `qrcodelogin`;
CREATE TABLE `qrcodelogin` (`id` int(11) NOT NULL AUTO_INCREMENT,`qruuid` varchar(15) NOT NULL DEFAULT '',`user_id` int(11) DEFAULT NULL,`user_token` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB;SET FOREIGN_KEY_CHECKS = 1; 


      先放上PHP的3个接口的代码:

public function qrcodeLogin(){//生成随机的UUID 用于二维码显示的内容 和 绑定用$qruuid = substr(md5(uniqid(mt_rand(), true)), 0, 15);//生成uuid$data['qruuid'] = $qruuid;$result = DB::table('qrcodelogin')->insert($data);$arr = ['code'=>1, 'msg' => '生成qruuid成功','data'=>$qruuid];return json_encode($arr);}public function bindQruuid(){/*** bindqruuid* App端扫描二维码获得qruuid以后* 然后请求这个接口  二维码的qruuid和用户绑定并把用户信息传入* (token或者user_info什么的 具体看需求)** User: caohan*/$qruuid = $_POST['qruuid'];$user_id = $_POST['user_id'];$qrcodeLogin = new Qrcode_login();$result = $qrcodeLogin->updateMessage($qruuid,$user_id);$arr = ['code' => 1, 'msg' => '绑定成功'];return json_encode($arr);}public function checkQruuid(){/*** checkqruuid* 用于前端页轮询 查询该qruuid是否被绑定** User: caohan*/$qruuid = $_GET['qruuid'];$qrcodeLogin = new Qrcode_login();$result = $qrcodeLogin->sel($qruuid);$m3_result = new M3Result();if (!is_null($result['user_id'])) {$m3_result->status = 1;$m3_result->message = '登陆成功';$m3_result->data = $result;}else{$m3_result->status = 500;$m3_result->message = 'qruuid暂时未被绑定';$m3_result->data = $qruuid;}return $m3_result->toJson();}


       HTML页的代码:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"><title>二维码扫描</title><link rel="stylesheet" type="text/css" href="/lib/my.css">
</head><body>
<div><div class="qr-btn" node-type="qr-btn">扫一扫<input node-type="jsbridge" type="file" name="myPhoto" value="扫描二维码" /></div>
</div><div class="result-qrcode">
</div>
<script src="/lib/zepto.js"></script>
<script src="/lib/qrcode.lib.min.js"></script>
<script src="/lib/qrcode.js"></script>
<script>//初始化扫描二维码按钮,传入自定义的 node-type 属性$(function() {Qrcode.init($('[node-type=qr-btn]'));});
</script>
</body></html>

css,js代码下载链接:https://pan.baidu.com/s/1-TeW4EG8YwOvTB2elnKV3w
                提取码:1030

 

 

 

 

 


http://www.ppmy.cn/news/653812.html

相关文章

网站用微信扫描二维码登录

网站实现扫描二维码关注微信公众号&#xff0c;自动登陆网站并获取其信息 生成带参数的二维码-微信开发文档 需求 网站实现扫描二维码关注微信公众号&#xff0c;如果已经关注公众号就自动登陆网站并获取其微信昵称&#xff0c;头像等信息&#xff0c;如果用户未关注就等用户关…

开放平台–扫描微信二维码登录

准备 如不了解第三方登录流程&#xff0c;建议先大概了解一下&#xff0c;在来看看代码。 说明&#xff1a; 由于开放平台无测试号测试&#xff0c;所以只能上开放平台进行配置信息。公众平台的测试号并不能给开放平台使用。 微信开放平台地址&#xff1a;https://open.weixi…

微信扫描二维码登录第三方平台

嗯。。。。。。 最近做了一个微信扫码登陆第三方平台功能&#xff0c;说下步骤就行&#xff0c;反正原理你们网上直接百度&#xff0c;我这里写了&#xff0c;估计也没几个人有耐心看 第一步 生成一个链接 https://open.weixin.qq.com/connect/qrconnect?appidxxxxxxxxf&…

keil_arm满减栈应用场景

.text .global _start _start:满减压栈使用场景ldr sp,0x40000800mov r0,#0x1mov r1,#0x2bl add1_funcadd r0,r0,r1 r0 r0 r1 0x3b stopadd1_func: 压栈保存现场 r0 0x1 r1 0x2stmfd sp!,{r0,r1&#xff0c;lr}mov r0,#0x3mov r1,#0x4bl add2_funcadd r0,r0,r1 r0 r…

小程序中使用scroll-view组件,内容高度未超过容器高度时依然可以上下滑动小段距离的问题

解决办法&#xff1a; 如下代码&#xff1a;检查下scroll-view组件是否设置了上下padding 或者 scroll-view的父盒子< view class“home-page” >…< /view >设置了上下padding&#xff0c;如果设置了&#xff0c;去掉就可以解决问题。 <view class"home…

word设置页眉页码 首页没有页眉(终于搞懂了)

1.设置首页没有页眉 主要是通过分节符完成的&#xff0c;顾名思义&#xff0c;分节符就是将全文分为两节&#xff0c;然后就可以实现对两节内容的分别设置。 比如首页没有页眉。 在首页的最后一行插入分节符&#xff0c;然后就会显示出&#xff08;分节符&#xff08;下一页…

去掉WORD文档中首页的页眉及页眉的横线

去掉WORD文档中首页的页眉及页眉的横线 左直拳 用WORD写文档&#xff0c;少不得加上页眉页脚。 可是有时候&#xff0c;写一个长一点的文档&#xff0c;需要制作一个封面&#xff0c;比如&#xff0c;写上“叉叉叉管理系统&#xff0c;某某某单位”之类&#xff0c;却猛然发现&…

python-docx修改页眉页脚

官方文档肯定是最正规的&#xff0c;但是有点简单&#xff0c;有必要记一下&#xff0c;网上资料较少。 https://python-docx.readthedocs.io/en/latest/dev/analysis/features/header.html?highlightfooter 打开一个文档后&#xff0c;页眉和页脚是跟着“节”走的&#xff…