android实现扫描网页二维码进行网页登录功能

时间:2021-05-20

先说一下实现了什么效果,app扫描php写的页面(也可以java网页,都一样的思路和步骤),扫描成功后跳转进入主页,光和你们这么说,肯定有人说了,没图说个jb,这就出来一个问题,很多人写博客,看这标题特别符合自己的问题,然后兴致勃勃的进来了,一看,我去...尼玛全是代码,也不知道是不是我的那种问题和想要的那种效果,心里没谱啊,好了,上图:


别纠结这页面咋这么丑,没写样式,说一下我实现的思路哈,首先在数据库中新建一个表用来存储扫码登录信息(id,username,randomnum),这三个分别是id自增长,用户名,随机数——>点击生成二维码,生成随机数,可以用http://qr.topscan.com/api.php?text=" + data,可以使用这个生成二维码,当然你也可以自己写,这个操作就相当于某宝的那个二维码登录框,生成二维码之后,这个时候做了一个ajax请求操作,在刚才新建的那个表中插入数据,把生成的随机数保存到表中,这个时候username为空——>打开app进行扫码操作,app扫描完成之后,进行网络请求,把你扫描到的二维码当成参数,做修改操作,修改username为当前你的用户名——>网页使用每个几秒钟请求另外一个接口,根据随机数判断当前username是否为空,如果不为空(刚才扫码修改了username所以不为空)jquery操作做跳转操作,这个就是完整的流程。

说的简单的就是,生成二维码的时候只存入随机数(或者你自定义的随便信息),使用app扫码之后根据随机数把用户名存进去,网页每隔5s请求另外一个接口时,如果username不为空好了跳转操作。大体就是这样的,有可能大神的实现也不是这样的,我就是把我理解的说出来,如果你们有另外的实现方法也可以在下边评论告诉我,共同学习,下面贴代码了。

部分php(新手可能不太规范,勿喷)login.php代码:

else if ($_REQUEST['act'] != '' && $_REQUEST['act'] == 'codeCreate') { //if userName为空--->表示网页第一次点击新建生成 //网页生成二维码操作,同时添加数据到表中 if ($_REQUEST['userName'] != '') {//不为空的时候表示修改 $userName = $_REQUEST['userName']; $randomNum = $_REQUEST['randomNum']; echo "扫码成功"; $sql = "update UserCodeLogin set username='$userName' WHERE randomnum='$randomNum'";// mysqli_query($conn, $sql);//插入成功 } else {//为空的时候表示是新建二维码 //生成随机数 $randomNum = ""; for ($i = 0; $i < 5; $i++) { $randomNum .= rand(0, 9); } echo $randomNum;//显示生成的随机数 $sql = "insert into UserCodeLogin(username,randomnum) VALUES ('','$randomNum')";// mysqli_query($conn, $sql);//插入成功 } mysqli_query($conn, $sql);//插入成功} else if ($_REQUEST['act'] != '' && $_REQUEST['act'] == 'codeSelect') {//根据随机数查询表中的username是否为空 $randomNum = $_REQUEST['randomNum']; if ($randomNum == '' && empty($randomNum)) { } else if ($randomNum != '') { $sql = "select username from UserCodeLogin where randomnum='$randomNum'"; $result = mysqli_query($conn, $sql);// print_r($result); if (mysqli_num_rows($result) > 0) { while ($row = mysqli_fetch_assoc($result)) { $userName = $row['username']; } if ($userName == '' && $userName == null) { //说明客户端还未扫码修改过 } else if ($userName != '') { //客户端扫码完成 //跳转页面 echo "客户端扫码成功,跳转中..."; } } }

然后是login.html

<html><head> <title>这是首页</title></head><script type="text/javascript" src="js/jquery-1.12.3.js"></script><body><script type="text/javascript"> var type = 1; var randomNum; function clickBtn() { $.post("../login.php?act=codeCreate&userName=", function (data) { alert("-------random:" + data); randomNum = data; $("#img").attr('src', "http://qr.topscan.com/api.php?text=" + data); }); type = 2; } function time() { $.post("../login.php?act=codeSelect&randomNum=" + randomNum, function (data) { if (data) { alert(data); $(location).attr('href', 'index.html'); } else { } }) } setInterval("time()", 4000);</script><button type="submit" id="btn" onclick="clickBtn()"> 点击生成二维码</button><!--src="https:///s/1slsQM2D 密码:gdyp

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章